그래프의 싱크
시간 제한1초메모리 제한128 MB
방향 그래프가 주어질 때, v에서 도달 가능한 모든 노드가 다시 v로 돌아올 수 있는 노드 v를 모두 찾아 오름차순으로 출력한다.
문제
방향 그래프 가 주어진다.
임의의 두 노드 에 대해, 에 속한 간선만을 이용해 에서 로 가는 경로가 존재하면 이를 로 표기한다.
노드 가 자신에서 도달할 수 있는 모든 노드로부터 다시 로 돌아오는 경로를 가진다면, 즉 다음 조건을 만족하면 를 싱크(sink) 라고 부른다.
그래프 의 모든 싱크를 모은 집합을 로 표기한다.
주어진 그래프 에 대해 를 구하시오.
입력
입력은 여러 개의 테스트 케이스로 이루어진다.
각 테스트 케이스의 첫 줄에는 노드의 수 ()과 음이 아닌 정수 ()이 주어진다. 이는 이고 간선의 수가 임을 뜻한다.
이어서 각 간선을 나타내는 개의 정수 쌍 이 공백으로 구분되어 주어진다. 각 쌍 는 간선 를 의미하며, 이 정수들은 여러 줄에 걸쳐 나타날 수 있다.
이 인 값이 주어지면 입력이 끝난 것이며, 이 경우는 처리하지 않고 프로그램을 종료해야 한다.
출력
각 테스트 케이스마다 에 속한 모든 노드를 한 줄에 출력한다. 노드는 오름차순으로 정렬하고 공백으로 구분한다. 만약 가 공집합이면 빈 줄을 출력한다.