#icpc2014summerday4i. [icpc2014summer_day4_i]首都

[icpc2014summer_day4_i]首都

MathJax.Hub.Config({ tex2jax: { inlineMath: [["","",""], ["\\(","\\)"]], processEscapes: true }}); blockquote { font-family: Menlo, Monaco, "Courier New", monospace; color: #333333; display: block; padding: 8.5px; margin: 0 0 9px; font-size: 12px; line-height: 18px; background-color: #f5f5f5; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, 0.15); -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; white-space: pre; white-space: pre-wrap; word-break: break-all; word-wrap: break-word; }

Problem Statement

閉路のない連結な有向グラフが与えられる.(有向グラフが連結であるとは,これを無向グラフとした時に連結であるという事である.)

このグラフに対して一つの頂点を選んで首都 ss を定めたい.

T(v)T(v) = "vv から全ての点を到達可能にするために必要な「辺の反転」操作の回数の最小値"とする.

ただし,「辺の反転」とは,頂点 v,uv,u に関して (v,u)(v,u) に張られていた有向辺を削除して (u,v)(u,v) に張り直すことである.

頂点 ss が首都であるとは任意の頂点 vv に対して, T(s)leqT(v)T(s)\\leq T(v) が成立することである.

首都であるような頂点をすべて列挙して答えよ.


Input

入力は以下のような形式で M+1M+1 行で与えられる.

NN MM
a_1a\_1 b_1b\_1
:
:
a_Ma\_M b_Mb\_M

  • 1行目には二つの整数 NN, MM が与えられ,与えられるグラフは NN 頂点 MM 辺であることを表す.
  • 2行目から M+1M+1 行目にはそれぞれ二つの整数 a_i,b_ia\_i, b\_i が与えられ,a_ia\_i から b_ib\_i に有向辺が張られていることを表す.

Constraints

  • 1leqNleq10,0001 \\leq N \\leq 10{,}000
  • 0leqMleq100,0000 \\leq M \\leq 100{,}000
  • 0leqa_ileqN10 \\leq a\_i \\leq N-1
  • 0leqb_ileqN10 \\leq b\_i \\leq N-1
  • a_ineqb_ia\_i \\neq b\_i
  • ineqji \\neq j ならば (a_i,b_i)neq(a_j,b_j)(a\_i, b\_i) \\neq (a\_j, b\_j)
  • 与えられるグラフは連結で閉路はない.
  • 与えられるグラフに対して,入次数が0である頂点の個数は50以下である.

Output

以下の形式で2行で出力せよ.

cnumcnum costcost
c_1c\_1 c_2c\_2 ... c_cnumc\_{cnum}

  • 1行目には二つの整数 cnumcnum, costcost を空白区切りで出力せよ.
  • 2行目には cnumcnum 個の整数 c_ic\_i を空白区切りで出力せよ.
  • 変数の意味は以下の通りである.
    • cnumcnum : 首都の性質を満たす頂点数
    • costcost : 首都となる頂点 vv に対する T(v)T(v) の値
    • c_ic\_i : 首都の性質を満たす頂点を番号に関して昇順に並べた時,ii 番目の頂点番号

Sample Input 1

3 2
0 1
2 1```

### Output for the Sample Input 1

```plain
2 1
0 2```

*   頂点0を首都とするときには辺(2,1)を反転すれば,(0,1), (1,2)の辺を持つグラフができるので1が答え.
*   $T(0)=1$,$T(1)=2$,$T(2)=1$である.

* * *

### Sample Input 2

```plain
5 4
0 1
2 1
2 3
4 3```

### Output for the Sample Input 2

```plain
3 2
0 2 4```

* * *

### Sample Input 3

```plain
5 5
0 1
1 2
3 2
3 4
4 1```

### Output for the Sample Input 3

```plain
2 1
0 3```

* * *