아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

축제

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

요약
각 퍼레이드마다 임시 도로를 최대 2개 추가했을 때 s에서 t로 가는 경로에 놓일 수 있는 도시의 수를 구합니다.
난이도

어려움10점 중 8점

유형
그래프, 위상 정렬, 트리
정답자
아직 제출이 없습니다

문제

rpeng: 빠른 입출력 문제를 피하려고 시간 제한을 2초로 올렸습니다. cin/cout을 사용해서 AC를 받았습니다(매우 간신히였습니다).

한 나라에 nn개의 도시와 mm개의 단방향 도로가 있습니다. 도시는 1,2,…,n1, 2, \dots, n으로 번호가 매겨져 있습니다. 도시 xx에서 도로를 따라 도시 yy에 도달할 수 있으면, yy는 xx에서 도달 가능하다고 하며 x⇒yx \Rightarrow y로 나타냅니다. 이 나라의 도로는 다음 성질을 만족합니다. 세 도시 x,y,zx, y, z에 대해 x⇒zx \Rightarrow z이고 y⇒zy \Rightarrow z이면, x⇒yx \Rightarrow y 또는 y⇒xy \Rightarrow x가 성립합니다.

축제 동안 qq번의 퍼레이드가 열립니다. ii번째 퍼레이드는 도시 sis_i에서 출발해 다른 도시들을 거쳐 도시 tit_i에서 끝납니다. 퍼레이드 중에 같은 도시를 여러 번 방문해도 됩니다. 퍼레이드를 더 흥미롭게 만들기 위해, 각 퍼레이드마다 그 퍼레이드만 사용하는 단방향 도로를 kk개(0≤k≤20 \le k \le 2) 새로 만듭니다. 다른 퍼레이드는 특정 퍼레이드를 위해 만든 도로를 지날 수 없습니다.

이제 퍼레이드 중에 방문할 수 있는 도시의 수를 구합니다. 특정 퍼레이드만을 위한 도로는 나라에 원래 있던 도로가 만족하는 성질을 따를 필요가 없다는 점에 주의하세요.

입력

첫 줄에 도시 수 nn, 도로 수 mm, 퍼레이드 수 qq, 퍼레이드마다 만들 도로 수 kk가 주어집니다.

이어지는 mm개의 줄에는 단방향 도로 u→vu \rightarrow v가 있음을 뜻하는 정수 u,vu, v가 주어집니다.

다음 qq개의 줄에는 퍼레이드의 출발지 sis_i와 도착지 tit_i가 주어집니다. 같은 줄에 그 퍼레이드만을 위한 임시 단방향 도로 a→ba \rightarrow b를 나타내는 정수 쌍 a,ba, b가 kk개 이어집니다.

원래 도로를 양방향으로 본다면 모든 도시는 서로 도달할 수 있습니다.

출력

각 퍼레이드마다 답을 한 줄에 출력합니다. 답은 방문할 수 있는 도시의 수입니다. 출발지에서 도착지에 도달할 수 없으면 0을 출력합니다.

제한

모든 테스트 케이스에 대해 1≤n,q≤3×1051 \le n, q \le 3 \times 10^5, n−1≤m≤6×105n-1 \le m \le 6 \times 10^5, 0≤k≤20 \le k \le 2입니다.

힌트

퍼레이드 1은 출발지가 도시 1, 도착지가 도시 4입니다. 임시 도로는 5→15 \rightarrow 1입니다. 방문할 수 있는 도시는 1, 2, 4, 5입니다.

퍼레이드 2는 출발지가 도시 2, 도착지가 도시 3입니다. 임시 도로는 5→35 \rightarrow 3입니다. 방문할 수 있는 도시는 2, 3, 4, 5입니다.

퍼레이드 3은 출발지가 도시 1, 도착지가 도시 2입니다. 임시 도로는 5→25 \rightarrow 2입니다. 방문할 수 있는 도시는 1, 2, 4, 5입니다.

퍼레이드 4는 출발지가 도시 3, 도착지가 도시 4입니다. 임시 도로는 5→15 \rightarrow 1입니다. 도시 3에서 도시 4에 도달할 수 없습니다.

예제1

  1. 예제 1

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