교통

시간 제한5초메모리 제한128 MB

요약
섬 위의 교차로와 일방통행/양방향 도로로 이루어진 평면 그래프에서, 도로가 서로 교차하지 않는다는 평면성 구조를 이용해 서쪽 교차로 각각에서 도달 가능한 동쪽 교차로 수를 구하는 문제입니다.
난이도

어려움10점 중 8점

유형
그래프, DFS, 유니온 파인드
정답자
아직 제출이 없습니다

문제

그디니아(Gdynia)의 중심부는 카차(Kacza)강 한가운데의 섬에 있다. 매일 아침 수천 대의 자동차가 강 서쪽의 주거 지역에서(섬 서쪽에 있는 교차로를 통해) 섬을 가로질러 강 동쪽의 산업 지역으로(섬 동쪽에 있는 교차로를 통해) 이동한다.

섬은 각 변이 좌표축과 평행한 직사각형이며, 마주 보는 두 꼭짓점이 (0,0)(0, 0)과 (A,B)(A, B)인 A×BA \times B 직사각형으로 나타낸다.

섬에는 11번부터 nn번까지 번호가 매겨진 nn개의 교차로가 있다. ii번 교차로의 좌표는 (xi,yi)(x_i, y_i)이다. 좌표가 (0,y)(0, y)인 교차로는 섬의 서쪽에 있고, 좌표가 (A,y)(A, y)인 교차로는 섬의 동쪽에 있다. 교차로들은 거리로 연결되며, 각 거리는 두 교차로를 잇는 선분이다. 각 거리는 일방통행이거나 양방향이다. 어떤 두 거리도 교차로에서의 공통 끝점을 제외하고는 어떤 점도 공유하지 않는다(다리나 터널은 없다). 그 밖에는 도로망에 대해 아무것도 가정하지 않는다. 강변을 따라 나 있는 거리가 있을 수 있고, 드나드는 거리가 하나도 없는 교차로가 있을 수도 있다.

서쪽에 있는 각 교차로에 대해, 그 교차로에서 도달할 수 있는 동쪽 교차로가 몇 개인지 구하라.

입력

첫째 줄에 네 정수 nn, mm, AA, BB가 주어진다(1≤n≤300 0001 \le n \le 300\,000, 0≤m≤900 0000 \le m \le 900\,000, 1≤A,B≤1091 \le A, B \le 10^9). 각각 교차로의 수, 거리의 수, 섬의 크기를 나타낸다.

다음 nn개의 줄에는 각각 두 정수 xix_i, yiy_i가 주어진다(0≤xi≤A0 \le x_i \le A, 0≤yi≤B0 \le y_i \le B). ii번 교차로의 좌표이다. 좌표가 같은 교차로는 없다.

다음 mm개의 줄에는 각각 세 정수 cic_i, did_i, kik_i가 주어진다(1≤ci,di≤n1 \le c_i, d_i \le n, ci≠dic_i \ne d_i, ki∈{1,2}k_i \in \{1, 2\}). 교차로 cic_i와 did_i를 잇는 거리를 나타낸다. ki=1k_i = 1이면 cic_i에서 did_i로 가는 일방통행이고, ki=2k_i = 2이면 양방향으로 다닐 수 있다. 순서 없는 쌍 {ci,di}\{c_i, d_i\}는 입력에 많아야 한 번 나타난다.

서쪽 교차로 중 적어도 하나는 동쪽의 어떤 교차로에 도달할 수 있다.

출력

서쪽에 있는 각 교차로마다 한 줄씩 출력한다. 각 줄에는 그 교차로에서 도달할 수 있는 동쪽 교차로의 수를 출력한다. 서쪽 교차로는 yy좌표가 큰 것부터 작은 순서로 출력한다.

힌트

예제5

  1. 예제 1

    입력
    12 13 7 9
    0 1
    0 3
    2 2
    5 2
    7 1
    7 4
    7 6
    7 7
    3 5
    0 5
    0 9
    3 9
    1 3 2
    3 2 1
    3 4 1
    4 5 1
    5 6 1
    9 3 1
    9 4 1
    9 7 1
    9 12 2
    10 9 1
    11 12 1
    12 8 1
    12 10 1
    
    예상 출력
    4
    4
    0
    2
    
  2. 예제 2

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

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

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

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