만드는 중입니다

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

새 관찰

시간 제한3초메모리 제한512 MB

요약
진짜 간선 집합 G와 일부 지름길 간선을 포함하는 방향 그래프 P가 주어질 때, a에서 T로 가는 모든 경로가 간선 (a, T)를 지나는 T의 진입 이웃 a를 모두 구한다.
난이도

어려움10점 중 8점

유형
그래프, DFS, 그리디, 구현
정답자
아직 제출이 없습니다

문제

Kiara는 아주 특이한 방식으로 이동하는 신기한 조류를 연구한다. 이들의 이동은 그래프의 언어로 설명하는 것이 가장 좋다. 노드가 나무인 방향 그래프 GG가 있고, 새는 (Ta,Tb)(T_a, T_b)가 GG의 간선일 때에만 나무 TaT_a에서 TbT_b로 날아갈 수 있다.

Kiara는 이 새들의 비행을 지배하는 실제 그래프 GG를 알지 못하지만, 이전 현장 연구에서 많은 새의 이동 데이터를 수집했다. 이를 이용해 새들이 어떻게 움직이는지 설명하는 그래프 PP를 고안했다. Kiara는 새를 너무 오래 관찰한 나머지, 새가 aa에서 bb로 직접 날아갈 수 있다면 그러한 사건을 적어도 한 번 목격했다고 확신한다. 그러나 새가 aa에서 bb를 거쳐 cc로 날아갔는데 그녀가 경유지 aa와 cc만 목격하고 (a,c)(a, c)를 PP에 추가했을 가능성이 있다. 새가 aa에서 bb를 거쳐 cc를 거쳐 dd로 날아갔는데 그녀가 aa와 dd만 목격하고 (a,d)(a, d)를 PP에 추가했을 가능성도 있다. 정리하자면, 그녀는 PP가 GG의 모든 간선을 포함하며, PP에는 GG에서 aa에서 bb로 가는 경로가 존재하는 다른 간선 (a,b)(a, b)가 포함되어 있을 수도 있다는 것을 안다(단, PP가 그러한 간선을 모두 포함하지는 않을 수 있다).

다음 현장 연구를 위해 Kiara는 주어진 나무 TT 옆에 기지를 설치하기로 했다. TT에 새가 도착하는 것을 경고받기 위해, 그녀는 새가 올 수 있는 나무, 즉 GG에 간선 (T′,T)(T', T)가 존재하는 나무 T′T'에 탐지기를 설치하고 싶어 한다. 탐지기는 저렴하지 않으므로, 그녀는 (T′,T)(T', T)가 GG에 속한다고 확신하는 나무 T′T'에만 탐지기를 설치하려 한다.

Kiara는 (a,b)(a, b)가 PP의 간선이고 PP에서 aa에서 시작해 bb에서 끝나는 모든 경로가 간선 (a,b)(a, b)를 사용할 때, 간선 (a,b)(a, b)가 GG에 속한다고 확신한다. Kiara는 (T′,T)(T', T)가 GG의 간선이라고 확신하는 나무 T′T'의 집합 S(T)S(T)를 계산해 달라고 요청한다.

입력

입력은 그래프 PP를 설명한다. 첫째 줄에는 공백으로 구분된 세 정수 NN, MM, TT가 주어진다. NN은 PP의 노드 수, MM은 PP의 간선 수, TT는 Kiara가 기지를 설치할 나무에 대응하는 노드이다.

다음 MM개의 줄은 그래프 PP의 간선을 설명한다. 각 줄에는 공백으로 구분된 두 정수 aa와 bb(0≤a,b<N0 \le a, b < N, a≠ba \ne b)가 주어지며, (a,b)∈P(a, b) \in P임을 나타낸다. 같은 쌍 (a,b)(a, b)가 두 번 나타나지 않음이 보장된다.

출력

출력은 집합 S(T)S(T)를 설명해야 한다. 첫째 줄에는 S(T)S(T)의 노드 수 LL이 주어지고, 이어서 LL개의 줄에 S(T)S(T)의 서로 다른 원소가 각각 하나씩 주어진다. S(T)S(T)의 원소는 증가하는 순서로, 한 줄에 하나씩 출력해야 한다.

제한

  • 1≤N,M≤100 0001 \le N, M \le 100\,000;
  • 0≤T<N0 \le T < N.

예제2

  1. 예제 1

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

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