만드는 중입니다

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

개, 배신자, 그리고 케이블

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

요약
격자에서 (1,1)부터 각 질의 칸까지 최단 경로 중 개가 물어뜯을 수 있는 케이블의 최대 개수를 구합니다.
난이도

어려움10점 중 9점

유형
그래프, BFS, 최단 경로, 동적 계획법
정답자
아직 제출이 없습니다

문제

이제 배신자에게도 개가 있다! 우주선 갑판은 n×mn \times m 격자 칸으로 이루어져 있다. 행은 위에서 아래로 1부터 nn까지, 열은 왼쪽에서 오른쪽으로 1부터 mm까지 번호가 매겨진다. 변을 공유하는 이웃 칸 사이 일부에는 케이블 조각이 놓여 있다.

게임 시작 시 개는 왼쪽 위 칸 (1,1)(1, 1)에 있다. 개는 플레이어 한 명을 고르며, 그 플레이어가 (x,y)(x, y) 칸에 있다고 하자. 개는 시작 칸에서 (x,y)(x, y)까지 가는 최단 경로 중 하나를 고른다. (개는 한 번에 변을 공유하는 이웃 칸으로 한 칸 움직인다.) 그다음 개와 플레이어가 번갈아 움직인다. 개는 고른 경로를 따라 달리고, 플레이어는 같은 경로의 반대쪽 끝에서 개를 향해 달린다. 첫 이동은 개가 한다. 개와 플레이어가 같은 칸에 놓이면 과정이 끝난다. 개가 케이블 조각을 지날 때마다 그 케이블을 물어 끊는다.

플레이어들이 개가 끊을 수 있는 케이블 조각의 최대 개수를 구하도록 도와라.

입력

첫 줄에 정수 nn, mm, kk가 주어진다. 각각 격자의 크기와 케이블 조각의 개수이다(1≤n,m≤200 0001 \le n, m \le 200\,000; n⋅m≤200 000n \cdot m \le 200\,000, 0≤k≤n⋅(m−1)+(n−1)⋅m0 \le k \le n \cdot (m - 1) + (n - 1) \cdot m).

다음 kk줄에는 케이블 조각이 네 정수 x1x_1, y1y_1, x2x_2, y2y_2로 하나씩 주어진다(1≤x1,x2≤n1 \le x_1, x_2 \le n; 1≤y1,y2≤m1 \le y_1, y_2 \le m). 두 칸 (x1,y1)(x_1, y_1)과 (x2,y2)(x_2, y_2)는 변을 공유하는 이웃 칸이며, 케이블 조각은 두 칸 사이의 경계 위에 있다. 이 조건은 항상 보장된다.

다음 줄에는 정수 qq가 주어진다. 답을 구할 플레이어 위치의 개수이다(1≤q≤201 \le q \le 20).

다음 qq줄에는 플레이어의 위치 xx, yy가 주어진다(1≤x≤n1 \le x \le n, 1≤y≤m1 \le y \le m).

출력

qq줄을 출력한다. ii번째 줄에는 ii번째 경우에 개가 끊을 수 있는 케이블 조각의 최대 개수를 출력한다.

힌트

(a) 첫 번째 입력에서 케이블은 다음과 같이 놓여 있다.

(b) 두 번째 입력에서 케이블은 다음과 같이 놓여 있다.

예제2

  1. 예제 1

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

    입력
    5 5 10
    3 1 2 1
    3 4 3 3
    1 3 1 2
    4 2 3 2
    5 1 4 1
    3 1 4 1
    3 4 2 4
    2 2 2 1
    2 2 1 2
    1 2 1 1
    5
    5 5
    2 3
    2 1
    4 1
    1 5
    
    예상 출력
    3
    2
    0
    1
    2