hdu2545

/*
分析:
    简单并查集。
    在网吧夜市刷题,桑不起呀,囧囧囧~~~


                                                 2012-11-19
*/










#include"stdio.h"
#include"string.h"
#define N 100011
int n,m;
int pre[N];
int dis[N];
void build()
{
	int i;
	for(i=1;i<=n;i++)	{pre[i]=i;dis[i]=0;}
}
int find(int k)
{
	int temp;
	if(pre[k]==k)	return k;
	temp=pre[k];
	pre[k]=find(temp);
	dis[k]+=dis[temp];
	return pre[k];
}
void Union(int a,int b)
{
	pre[a]=b;
	dis[a]=1;
}
int main()
{
	int i,l;
	int a,b;
	int t;
	while(scanf("%d%d",&n,&m),n||m)
	{
		build();
		for(i=1;i<n;i++)	{scanf("%d%d",&a,&b);Union(b,a);}
		for(i=0;i<m;i++)
		{
			scanf("%d%d",&a,&b);
			t=find(a);
			t=find(b);
			if(dis[a]<=dis[b])	printf("lxh\n");
			else				printf("pfz\n");
		}
	}
	return 0;
}


你可能感兴趣的:(hdu2545)