pku 1330 LCA

╄→尐↘猪︶ㄣ 提交于 2019-11-27 00:50:19

第一道LCA

 

#include<stdio.h>
#include
<string.h>
#define N 10001
int unionset[N],visit[N];
int main()
{
int T,n,a,b,i;
scanf(
"%d",&T);
while(T--)
{
scanf(
"%d",&n);
for(i=1;i<=n;i++) //init it
{
unionset[i]
=i;
visit[i]
=0;
}
for(i=1;i<n;i++)
{
scanf(
"%d%d",&a,&b);
unionset[b]
=a;
}
scanf(
"%d%d",&a,&b);
/*find the root*/
visit[a]
=1;
a
=unionset[a];
while(a!=unionset[a])
{
a
=unionset[a];
visit[a]
=1;
}
while(b!=unionset[b])
{
if(visit[b]) break;
b
=unionset[b];
}
printf(
"%d\n",b);
}
return 0;
}

 

转载于:https://www.cnblogs.com/ACAC/archive/2010/05/26/1744781.html

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!