代码:
#include <bits/stdc++.h>
using namespace std;
const int maxn=105;
int fa[maxn],c[maxn],n,ans=0,mx=0,u,v;
map<int,int> mp;
int get(int x){
int s=1;
while(x!=1){
s++;
x=fa[x];
}
return s;
}
int zjggzx(int u,int v){
if(fa[u]==fa[v]){
return fa[u] ;
}
int len1=c[u],len2=c[v];
if(len1!=len2){
if(len1<len2){
for(int i=1;i<=len2-len1;i++){
v=fa[v];
}
}else{
for(int i=1;i<=len1-len2;i++){
u=fa[u];
}
}
}
return zjggzx(fa[u],fa[v]);
}
int main(){
cin>>n;
for(int i=1;i<n;i++){
int x,y;
cin>>x>>y;
//G[x].push_back(y);
fa[y]=x;
}
cin>>u>>v;
//int ans=zjggzx(u,v);
for(int i=1;i<=n;i++){
c[i]=get(i);
mx=max(mx,c[i]);
mp[c[i]]++;
}
cout<<mx<<endl;
mx=0;
for(auto i:mp){
//cout<<i.first<<" "<<i.second<<endl;
mx=max(mx,i.second);
}
cout<<mx<<endl;
int zx=zjggzx(u,v);
while(u!=zx){
ans+=2;
u=fa[u];
}
while(v!=zx){
ans++;
v=fa[v];
}
cout<<ans<<endl;
return 0;
}
恳请各位巨佬/神犇指点迷津