我太菜了,第一次出现RE。
有大佬看看find()函数的问题吗?
大概是吧
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const int M=1e6+5;
int n,cnt,ans=0;
//ll size[M],head[M];
int father[M];//父亲节点
bool leaf[M];
inline int read()
{
int x=0,k=1; char c=getchar();
while(c<'0'||c>'9'){if(c=='-')k=-1;c=getchar();}
while(c>='0'&&c<='9')x=(x<<3)+(x<<1)+(c^48),c=getchar();
return x*k;
}
/*
void add(int x,int y,int z){
cnt++;
node[cnt].to=y;
node[cnt].next=head[x];
node[cnt].w=z;
head[x]=cnt;
}
*/
int find(int x,int cnt){
if(x==1) return cnt;
else{
find(father[x],cnt+1);
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
{
int x,y;
scanf("%d%d",&x,&y);
father[x]=i;father[y]=i;
if(x==0 && y==0){
leaf[i]=1;
}
}
for(int i=1;i<=n;i++)
{
int qwe;
if(leaf[i]){
qwe=find(father[i],2);
ans=max(ans,qwe);
}
}
cout<<ans;
return 0;
}