我自己本来想用静态结构体的,从网上找的这篇代码只用一个数组就搞定,思想一样。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int t;
int anc[10001];
int n,a,b,i;
int vis[10001];
scanf("%d",&t);
while(t--)
{
memset(anc,-1,sizeof(anc));
scanf("%d",&n);
for(i=1;i<n;i++)
{
scanf("%d%d",&a,&b);
anc[b]=a;
}
scanf("%d%d",&a,&b);
memset(vis,0,sizeof(vis));
while(b!=-1)
{
vis[b]=1;
b=anc[b];
}
while(a!=-1)
{
if(vis[a]) break;
a=anc[a];
}
printf("%d\n",a);
}
return 0;
}