#include<iostream>
#include<queue>
using namespace std;
int n,a,b,st;
int fa[10000+10],deep[10000+10];
vector<int> g[10000+10];
void bfs(int st){
queue<int> q;
q.push(st);
while(!q.empty()){
int u=q.front(); q.pop();
for(int i=0;i<g[u].size();i++){
int v=g[u][i];
if(v!=fa[u]){
deep[v]=deep[u]+1;
q.push(v);
}
}
}
return ;
}
int main(){
cin>>n>>a>>b;
for(int i=1;i<=n;i++)
fa[i]=-1;
for(int i=1;i<=n;i++)
deep[i]=1;
int u,v;
while(cin>>u){
while(cin.peek()!='\n'&&cin>>v){
fa[v]=u;
g[u].push_back(v);
g[v].push_back(u);
}
}
for(int i=1;i<=n;i++)
if(fa[i]==-1)
st=i;
bfs(st);
if(deep[a]<deep[b])
swap(a,b);
int tmp=deep[a]-deep[b];
while(tmp--)
a=fa[a];
// cout<<a<<" "<<b;
while(true){
if(a==b) break;
a=fa[a];
b=fa[b];
}
cout<<a;
return 0;
}
好神奇啊,为什么我让他自动测评测试点是错的,但是我手动测是对的