jhb518619 @ 2016-11-17 11:37:04
#include<stdio.h>
int a[20000],n,m,s[100],z[100];
void init()
{
int i;
for(i=1;i<=n;i++)
{
a[i]=i;
}return;
}
int getf(int i)
{
if(a[i]==i)
return i;
else
a[i]=getf(a[i]);
return a[i];
}
void merge(int x,int y)
{
int t1,t2;
t1=getf(x);
t2=getf(y);
if(t1!=t2)
a[t2]=t1;
return;
}
int main()
{
int k,l,h,i,w=0,u=0;
scanf("%d%d",&n,&m);
init();
for(i=1;i<=m;i++)
{
scanf("%d",&k);
scanf("%d%d",&l,&h);
if(k==1)
{
merge(l,h);
}
else
{
if(a[l]==a[h])
printf("Y\n");
else printf("N\n");
}
}
}
by huhuhuhaha @ 2016-11-17 13:00:14
@jhb518619 应该是最后输出Y和N的时候错了,把if a[l]==a[h]改成if getf(l)==getf(h)试试
by jhb518619 @ 2016-11-17 16:17:29
谢谢,改完之后就对了@ Microsoft