样例4,输出5。
#include <cstdio>
#define max(a,b) a>b?a:b
struct node {
int left,right;
};
int n,t1,t2,res;
node a[1000001];
int dpth[1000001];
void dfs(node s,int d) {
res=max(res,d);
if(dpth[s.left]==0) {
dpth[s.left]=d+1;
dfs(a[s.left],d+1);
}
if(dpth[s.right]==0) {
dpth[s.right]=d+1;
dfs(a[s.right],d+1);
}
}
int main() {
scanf("%d",&n);
for(int i=1;i<=n;i++) {
scanf("%d%d",&t1,&t2);
a[i]={t1,t2};
}
dfs(a[1],1);
printf("%d",res);
return 0;
}
记录