您的位置:首页 > 其它

hdu 2545 树上战争

2013-04-10 22:19 274 查看
//只需求出两个节点到达公共祖先节点所走的次数,只要求出节点到最原始祖先节点的次数

//并差集

#include<stdio.h>
int f[100002];
int find(int a)
{
int cont=0;
while(f[a]!=a)
{
cont++;
a=f[a];
}
return cont;
}
int main()
{
int i,a,b,n,m;
while(scanf("%d%d",&n,&m),n||m)
{
for(i=1;i<=n;i++)
f[i]=i;
for(i=1;i<n;i++)
{
scanf("%d%d",&a,&b);
f[b]=a;
}
for(i=0;i<m;i++)
{
scanf("%d%d",&a,&b);
a=find(a);
b=find(b);
if(b<a)printf("pfz\n");
else printf("lxh\n");
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: