A - Venues
Editorial
/
Time Limit: 2 sec / Memory Limit: 1024 MB
配点 : 300 点
問題文
パ研王国は N 個の街とそれを繋ぐ M 本の道路からなります。街には標高が高い順に 1, 2, \ldots, N の番号がついており、全ての道路は標高が高い街から低い街へ一方向に移動することができます。具体的には、 i 番目の道路は街 A_i から街 B_i への一方向に移動することができます (A_i < B_i) 。
さて、今年もパ研合宿が開催されます。今年のパ研合宿ではいくつかの街に会場を設け、パ研王国のどの街からでも 0 本以上の道路を通ることで会場のある街に移動できるようにします。
しかし、予算に制約があるため、会場を設ける街をできるだけ少なくしたいです。このとき、会場を設ける街の集合を一つ定めて下さい。
制約
- 入力は全て整数
- 1 \leq N \leq 10^5
- 0 \leq M \leq 2 \times 10^5
- 1 \leq A_i < B_i \leq N (1 \leq i \leq M)
入力
入力は以下の形式で標準入力から与えられる。
N M A_1 B_1 A_2 B_2 \vdots A_M B_M
出力
1 行目には、会場を設ける街の個数を出力せよ。これは条件を満たすように会場を設けるとき、会場を設ける街の数として考えられる最小値である必要がある。
2 行目には、会場を設ける街を空白区切りで昇順に出力せよ。
入力例 1
4 4 1 2 1 3 1 4 2 4
出力例 1
2 3 4
この出力例の場合、それぞれの街からは、次のように会場のある街に移動できます。
- 街 1 からは街 3, 4 に移動できる
- 街 2 からは街 4 に移動できる
- 街 3 からは街 3 に移動できる
- 街 4 からは街 4 に移動できる
また、会場を 1 つ以下の街に設けて、全ての街から会場のある街に移動することはできないため、この出力は条件を満たします。
入力例 2
10 20 4 6 7 9 1 8 4 7 2 3 5 6 5 8 8 10 8 9 3 4 7 8 3 6 1 2 4 9 8 10 6 10 5 9 2 7 6 10 1 8
出力例 2
2 9 10