题解
- 极其臃肿和冗杂的题面,真的是增长题面来增加难度
- 一句话来说,题目就是要求环,没错就是环
- 剩下的就简单了,一个while,只要入队两次就成环,直接输出
代码
1 #include <cstdio>
2 int n,x,cnt,a[200010],q[200010],p[200010];
3 int find(int x) { while (!p[x]) p[x]=++cnt,q[cnt]=x,x=a[x]; return x; }
4 int main()
5 {
6 scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d",&a[i]);
7 x=find(1),printf("%d
",cnt-p[x]+1);
8 for (int i=p[x];i<=cnt;i++) printf("%d ",q[i]);
9 }