题解:
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
#define maxn 1000000+100
int father[maxn];
int a[maxn],b[maxn];
int main()
{
int n,x,y;
memset(a,0x3f,sizeof(a));
memset(b,0x3f,sizeof(b));
cin>>n;
for(int i=1;i<=n;i++)
father[i]=i;
for(int i=1;i<n;i++)
{
cin>>x>>y;
father[y]=x;
}
cin>>x>>y;
for(int i=0;i<n;i++)
{
a[x]=min(i,a[x]);
x=father[x];
b[y]=min(i,b[y]);
y=father[y];
}
int mn=999999,ans;
for(int i=1;i<=n;i++)
{
if(a[i]+b[i]<mn){
mn=a[i]+b[i];
ans=i;
}
}
cout<<ans;
return 0;
}