#include<stdio.h>
#include<string.h>
#include<vector>
#include<algorithm>
using namespace std;
vector<int> s[10005];
int d[10005],vi[10005],ans,p;
void dfs(int v,int add){
int i;
d[v]=add;
if(add>ans) ans=add,p=v;
for(i=0;i<s[v].size();i++)
if(vi[s[v][i]]==0)
vi[s[v][i]]=1,dfs(s[v][i],add+1);
}
int main(){
int n,x,i,j;
while(scanf("%d",&n)!=EOF){
memset(s,0,sizeof(s));
memset(vi,0,sizeof(vi));
ans=0;
for(i=0;i<n;i++)
while(scanf("%d",&x) && x!=-1)
s[i].push_back(x),s[x].push_back(i);
dfs(0,0);
ans=0;
memset(vi,0,sizeof(vi));
dfs(p,0);
printf("%d\n",ans);
}
}
沒有留言:
張貼留言