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

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

Cheat

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

요약
i에서 i+1로 가는 간선이 있는 방향 그래프에서 모든 사이클에 속하는 정점을 모두 나열하고, 사이클이 없으면 모든 정점을 나열한다.
난이도

어려움10점 중 8점

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

문제

Eryk와 그의 파트너 "Synek"은 다음 사기를 계획하고 있다. 이들은 보통 낮은 환율로 위조 지폐를 제안해 외국인을 속이기 때문에, 발각을 피하려면 나라 곳곳을 많이 돌아다녀야 한다.

그러기 위해서는 기지를 세울 도시를 찾아야 한다. 이들의 조국에 있는 도시와 도로는 11부터 nn까지의 정수로 번호가 붙은 nn개의 정점을 가진 방향 그래프로 볼 수 있으며, 특별한 성질이 있다. 각 유효한 ii에 대해 정점 ii에서 정점 i+1i + 1로 가는 방향 간선이 존재한다.

이들은 각 "여행" 후에 기지로 돌아오고 싶어 하므로 사이클을 매우 매력적으로 여긴다. 그래서 나라의 모든 사이클 위에 놓인 도시에 기지를 세우기로 했다. 그러한 도시가 여러 개일 수 있으므로, 이들은 여러분에게 그 도시를 모두 적어 달라고 요청한다. 그래프에 사이클이 없으면 아무 도시에나 기지를 세울 수 있다.

형식적으로 사이클은 같은 도시에서 시작하고 끝나며, 최소한 하나의 다른 도시를 방문하는 경로이다(여러 번 방문할 수도 있다).

입력

첫째 줄에 정수 Z≤50Z \le 50이 주어지며, 이는 다음 줄에 설명되는 테스트 케이스의 수를 나타낸다.

테스트 케이스의 첫째 줄에는 도시의 수와 도로의 수를 나타내는 두 정수 nn과 mm이 주어진다. 다음 mm개의 줄 각각에는 두 정수 ai,bia_i, b_i (ai≠bia_i \neq b_i)가 주어지며, 이는 aia_i에서 bib_i로 가는 방향 도로가 있음을 나타낸다. aia_i에서 bib_i로 가는 도로가 여러 개 존재할 수 있다.

출력

각 테스트 케이스마다 Eryk와 "Synek"이 기지를 세울 수 있는 도시의 수를 출력하고, 그 뒤에 해당 도시들의 번호를 오름차순으로 출력한다.

제한

  • n∈[1,500 000],m∈[0,500 000]n \in [1, 500\,000], m \in [0, 500\,000]
  • 모든 테스트 케이스에 걸친 nn의 합과 mm의 합은 1 000 0001\,000\,000을 넘지 않는다.

예제1

  1. 예제 1

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