WA,没T
#include <cstdio>
const int maxn=200005;
int n, e[maxn], p[maxn], ans=0;
bool vis[maxn];
void dfs(int x, int s) {
if (ans) return;
if (vis[e[x]]) {
ans=s-p[e[x]]+1;
return;
}
p[x]=s;
vis[e[x]]=true;
dfs(e[x], s+1);
}
int main() {
scanf("%d", &n);
for (int i=1; i<=n; ++i) {
int t;
scanf("%d", &t);
e[i]=t;
}
vis[1]=true;
dfs(1, 0);
printf("%d\n", ans);
return 0;
}