桑心呐。

代码:
#include<bits/stdc++.h>
using namespace std;
int n,num;
struct node{
int cnt=0,s[1010];
}a[1010];
int dfs(int x){
if(!x) return 0;
int cntt=a[x].cnt,maxx=-1;
for(int i=1;i<=cntt;i++){
int df=dfs(a[x].s[i]);
if(df>maxx)
maxx=df;
}
return maxx+1;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
int g;
cin>>g;
if(g==i){
num=g;
continue;
}
a[i].cnt++;
a[i].s[a[i].cnt]=g;
}
cout<<dfs(1);
return 0;
}