問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
子供遊園地のディレクターとなった paiza 君はちびっこ全員がゴールできるような親切設計の迷路を作ることにしました。迷路には 1 ~ N までの番号が振られた N 個のエリアがあり、そのうち他のエリアから向けられた通路が存在しないエリアをスタート、他のエリアに向けた通路が存在しないエリアをゴールとします。スタート・ゴールは 1 つとは限らない点に注意してください。
各エリアからは他のエリアに向けて一方通行の通路を用意することにしました。
エリアと通路の草案が完成したところで、paiza 君は次の 2 点について確認することにしました。
・通路を進んでいけばどのエリアからでも迷わずゴールできる設計になっているかどうか
・スタートからゴールまで全部で何通りの行き方が存在するか
迷路についての情報が与えられるのでこの 2 点について調査を行なってください。
なお、迷わない迷路とは「任意のエリア X から通路 R_1, ... R_y を順に進んだときに再びエリア X に到着するような通路の順列 R_1, ..., R_y が存在せず、スタートからゴールできる迷路」であるものとします。
例として入力例 1 の迷路は以下の通りであり、スタートは 1,6, ゴールは 2,5,6 となります。
N K
D_1 T_1
...
D_K T_K
judge
G_1 roots_num_1
...
すべてのテストケースにおいて、以下の条件をみたします。
・ 1 ≦ N ≦ 5000
・ 1 ≦ M ≦ min(N × (N - 1) / 2, 100000)
・ 1 ≦ D_i, T_i ≦ N (1 ≦ i ≦ K)
6 5
1 2
1 3
3 4
3 5
4 5
Yes
2 1
5 2
6 1
5 9
5 4
5 3
5 2
5 1
1 2
1 3
1 4
2 3
2 1
No