T[1].f=T[1].d=1;
scanf("%d",&n);
for(int k=1;k<n;k++){
int a,b;
scanf("%d%d",&a,&b);
if(T[a].leaf){
T[a].l=b;
T[a].leaf=false;
}
else{
T[a].r=b;
}
T[b].f=a;
T[b].d=T[a].d+1;
}
int sta,fin;
scanf("%d%d",&sta,&fin);
int dep(int nod){
if(T[nod].leaf)return 1;
else return max(dep(T[nod].l),dep(T[nod].r))+1;
}
int wei(){
int maxn=INT_MIN;
for(int k=1;k<=n;k++)W[T[k].d]++;
for(int k=1;k<=100;k++)maxn=max(maxn,W[k]);
return maxn;
}
int dfs(int sta,int fin){
int rcd=sta;
vector<int> F1;
vector<int> F2;
while(1){
F1.push_back(rcd);
rcd=T[rcd].f;
if(rcd==1){
F1.push_back(1);
break;
}
}
rcd=fin;
while(1){
F2.push_back(rcd);
rcd=T[rcd].f;
if(rcd==1){
F2.push_back(1);
break;
}
}
int z1=F1.size()-1,z2=F2.size()-1;
for(;;z1--,z2--){
if(F1[z1]!=F2[z2]){
return (z1+1)*2+z2+1;
}
else if(z1==0)return z2-1;
else if(z2==0)return z1*2;
}
}
已经尽力改码风了,球球各位dalao好心看看吧...