AT_abc311_c [ABC311C] Find it!

Description

[problemUrl]: https://atcoder.jp/contests/abc311/tasks/abc311_c $ N $ 頂点 $ N $ 辺の有向グラフがあります。 $ i $ 番目の辺は頂点 $ i $ から 頂点 $ A_i $ に伸びます。 ( $ i\ \neq\ A_i $ であることは制約より保証されます ) 同一頂点を複数回含まない有向閉路をひとつ求めてください。 なお、この問題の制約下で答えが存在することが示せます。 #### 注釈 この問題では、有向閉路とは以下の条件を全て満たす頂点の列 $ B=(B_1,B_2,\dots,B_M) $ であるとします。 - $ M\ \ge\ 2 $ - $ B_i $ から $ B_{i+1} $ に辺が伸びている。 ( $ 1\ \le\ i\ \le\ M-1 $ ) - $ B_M $ から $ B_1 $ に辺が伸びている。 - $ i\ \neq\ j $ ならば $ B_i\ \neq\ B_j $

Input Format

入力は以下の形式で標準入力から与えられる。 > $ N $ $ A_1 $ $ A_2 $ $ \dots $ $ A_N $

Output Format

以下の形式で出力せよ。 > $ M $ $ B_1 $ $ B_2 $ $ \dots $ $ B_M $ $ M $ は出力する有向閉路の頂点数であり、 $ B_i $ は有向閉路の $ i $ 番目の頂点である。 出力は以下の条件を満たす必要がある。 - $ 2\ \le\ M $ - $ B_{i+1}\ =\ A_{B_i} $ ( $ 1\ \le\ i\ \le\ M-1 $ ) - $ B_{1}\ =\ A_{B_M} $ - $ B_i\ \neq\ B_j $ ( $ i\ \neq\ j $ ) 答えとして考えられるものが複数ある場合、どれを出力しても正解となる。

Explanation/Hint

### 制約 - 入力は全て整数 - $ 2\ \le\ N\ \le\ 2\ \times\ 10^5 $ - $ 1\ \le\ A_i\ \le\ N $ - $ A_i\ \neq\ i $ ### Sample Explanation 1 $ 7\ \rightarrow\ 5\ \rightarrow\ 3\ \rightarrow\ 2\ \rightarrow\ 7 $ は確かに有向閉路になっています。 この入力に対応するグラフは以下の通りです。 !\[\](https://img.atcoder.jp/abc311/0ab396c54e276edb27de02ad3b20cf7f.png) 他の正解となる出力の例は以下の通りです。 ``` 4 2 7 5 3 ``` ``` 3 4 1 6 ``` グラフが連結であるとは限らないことに注意してください。 ### Sample Explanation 2 $ 1\ \rightarrow\ 2 $ と $ 2\ \rightarrow\ 1 $ の辺が双方存在するケースです。 この場合、 $ 1\ \rightarrow\ 2\ \rightarrow\ 1 $ は確かに有向閉路になっています。 この入力に対応するグラフは以下の通りです。 図中 $ 1\ \leftrightarrow\ 2 $ で $ 1\ \rightarrow\ 2 $ と $ 2\ \rightarrow\ 1 $ の辺が双方あることを表現しています。 !\[\](https://img.atcoder.jp/abc311/97e8121c1e36bbcefae0b68e1b8fbfd2.png) ### Sample Explanation 3 この入力に対応するグラフは以下の通りです。 !\[\](https://img.atcoder.jp/abc311/c31a7153e0ca36e8c0e1dd4c7bfe5329.png)