#include<stdio.h>
#include<string.h>
const int maxm=10005;
int father[maxm];
bool vis[maxm];
int main()
{
int n,i,j,k,sum,a,b,t,x,y;
scanf("%d",&t); //输入测试用例
while(t--)
{
memset(vis,false,sizeof(vis)); //使vis里都为假
memset(father,-1,sizeof(father)); //使father里都为真
scanf("%d",&n); //输入节点数
for(i=1;i<n;i++)
{
scanf("%d%d",&x,&y); //输入边
father[y]=x;
}
scanf("%d%d",&a,&b); //输入需要求的共同祖先
while(b!=-1)
{
vis[b]=true; //将b的特殊标记
b=father[b];
}
while(!vis[a]) //如果a==b
a=father[a];
printf("%d\n",a);
}
return 0;
}
/*
324
5
2 3
3 4
3 1
1 5
3 5
*/
0038 最近公共祖先
最新推荐文章于 2019-04-29 10:51:44 发布