#include<iostream>
using namespace std;
int n,l,r,ans=-1,mark[100010]={};
typedef struct treenode{
int data;
treenode* parent;
} trn;
trn* createnode(int tmpdata)//建立树节点
{
trn* tmp=new trn;
tmp->data=tmpdata;
tmp->parent=NULL;
return tmp;
}
trn* aim[1000010];
int search(trn* num)
{
if(num->data==1) return 1;
if(mark[num->data]!=0) return mark[num->data];
mark[num->data]=1+search(num->parent);
return mark[num->data];
}
int main()
{
cin >> n;
mark[1]=1;
aim[1]=createnode(1);
for(int i=1;i<=n;i++)//建树
{
cin >> l >> r;
if(!aim[i]) aim[i]=createnode(i);
if(l)
{
aim[l]=createnode(l);
aim[l]->parent=aim[i];
}
if(r)
{
aim[r]=createnode(r);
aim[r]->parent=aim[i];
}
}
for(int i=2;i<=n;i++) ans=max(ans,search(aim[i]));
cout << ans;
}
dalao还有救吗,感觉是空间开大了