问题描述
有一个有向图,有 N 个顶点和 N 条边。
第 i 条边从顶点 i 到顶点 A i 。(约束保证 i!=A i 。)
找到一个有向循环,其中同一顶点不会多次出现。
可以证明,在该问题的约束下存在解决方案。
注释
当满足以下所有条件时,顶点序列 B=(B 1 ,B 2 ,…,B M ) 称为有向循环:
M≥2 从顶点 B i 到顶点 B i+1 的边存在。
(1≤i≤M−1)从顶点 B M 到顶点 B 1 的边存在。
如果 i!=j,则 Bi !=B j 。
约束
所有输入值都是整数。
2≤N≤2×10 5
1≤A i ≤N Ai!=i
输入
输入来自标准输入,格式如下:
N
A 1 A 2 … A N
输出
以以下格式打印解决方案:
M
B 1 B 2… B M
----------
这里面是用数组来记录有向图,一个数循环n次一定会进入那个圆环中。
然后以这个数为start,遍历到下一个也是start的时候停止即可。list中的数据就是环中的数据。