만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

악랄한 문제 출제자

시간 제한10초메모리 제한1024 MB

요약
격자에 블랙홀이 최대 42개 있을 때, 각 질의마다 입구에서 출구까지 블랙홀을 피한 최단 거리를 구합니다. 도달할 수 없으면 -1을 출력합니다.
난이도

어려움10점 중 9점

유형
최단 경로, 그래프, 구현
정답자
아직 제출이 없습니다

문제

일부 참가자는 어려운 문제 때문에 이 대회에서 도망치기로 결정한다. 이를 막기 위해 악랄한 출제진은 경기장 출구에 미로를 만들어 두었다. 미로는 n×mn \times m 격자이며, 입구와 출구가 있고 kk개의 블랙홀이 있다. 블랙홀에 실수로 빠진 참가자는 그 안으로 떨어져 대회에서 영원히 탈출할 수 없다.

더 나쁜 것은, 출제진이 입구와 출구의 좌표를 바꿀 수 있다는 점이다. 당신은 입구에서 출발해 블랙홀을 밟지 않고 출구에 도달하려는 가난한 참가자다. 한 번의 이동으로는 상하좌우로 인접한 칸 중 한 칸으로만 갈 수 있다. 출제진이 입구와 출구의 좌표를 바꿀 때마다, 입구에서 출구까지 가는 데 필요한 최소 이동 횟수를 구하라.

입력

첫 줄에 네 정수 n,m,k,qn, m, k, q (1≤n,m≤200 000,nm≤200 000,0≤k≤42,1≤q≤100 000)(1 \leq n, m \leq 200\,000, nm \leq 200\,000, 0 \leq k \leq 42, 1 \leq q \leq 100\,000)가 주어진다. 각각 격자의 행 수, 열 수, 블랙홀의 개수, 질의의 개수이다.

다음 kk개의 줄에는 블랙홀의 좌표 x,yx, y (1≤x≤n,1≤y≤m)(1 \leq x \leq n, 1 \leq y \leq m)가 한 줄에 두 정수로 주어진다. 같은 위치에 블랙홀이 두 개 있는 경우는 없다.

마지막 qq개의 줄에는 질의가 주어진다. 각 줄에는 네 정수 xs,ys,xt,ytx_s, y_s, x_t, y_t (1≤xs,xt≤n,1≤ys,yt≤m)(1 \leq x_s, x_t \leq n, 1 \leq y_s, y_t \leq m)가 주어지며, (xs,ys)(x_s, y_s)는 입구, (xt,yt)(x_t, y_t)는 출구의 좌표이다.

출력

각 질의마다 입구에서 출구까지 도달하는 데 필요한 최소 이동 횟수를 한 줄에 하나씩 출력한다. 도달할 수 없으면 −1-1을 출력한다. 입구나 출구가 블랙홀과 같은 위치에 있으면 도달할 수 없는 것으로 본다.

힌트

미로의 모습과 첫 번째 질의에 대한 최단 경로 예시는 아래 그림과 같다.

예제2

  1. 예제 1

    입력
    5 5 4 7
    2 2
    2 3
    3 2
    3 3
    2 1 3 4
    1 1 1 1
    2 2 2 2
    1 1 1 5
    2 2 5 5
    2 1 2 4
    1 1 3 3
    
    예상 출력
    6
    0
    -1
    4
    -1
    5
    -1
    
  2. 예제 2

    입력
    2 3 2 1
    1 2
    2 1
    1 1 2 3
    
    예상 출력
    -1