使用10 3 8 7 10 7测出来的结果都正确
#include<iostream>
#include<algorithm>
using namespace std;
struct team{
int l,r,f,d,w,p;
}t[10005];
int sum[105];
int maxd=1;
int lca(int x,int y){
t[x].p=1;
while(t[x].f!=0){
x=t[x].f;
t[x].p=1;
}
while(t[y].p!=1){
y=t[y].f;
}
return y;
}
void dfs(int x,int cnt){
if(x==0)return ;
if(cnt>maxd)maxd=cnt;
dfs(t[x].l,cnt+1);
dfs(t[x].r,cnt+1);
}
int main(){
int n;
cin>>n;
t[1].f=0;
t[1].d=1;
for(int i=1;i<n;i++){
int u,v;
cin>>u>>v;
if(t[u].l==0){
t[u].l=v;
}
else t[u].r=v;
t[v].f=u;
t[v].d=t[u].d+1;
}
dfs(1,1);
int x,y,num=0,numl=0;
cin>>x>>y;
int ta=lca(x,y);
while(x!=ta){
x=t[x].f;
num++;
}
num*=2;
int count=0;
while(y!=ta){
y=t[y].f;
numl++;
}
for(int i=1;i<=n;i++){
sum[t[i].d]++;
}
sort(sum+1,sum+100+1);
cout<<maxd<<endl<<sum[100]<<endl<<num+numl;
return 0;
}