Pagini recente » Cod sursa (job #1782846) | Cod sursa (job #932023) | Cod sursa (job #2407095) | Cod sursa (job #1039849) | Cod sursa (job #721862)
Cod sursa(job #721862)
#include<stdio.h>
int m,n,i,j,t[100013],h[100013],o,a,b;
inline void uneste(int a, int b)
{
while(a!=t[a])a=t[a];
while(b!=t[b])b=t[b];
if(h[a]>h[b]){t[b]=a;return;}
if(h[a]<h[b]){t[a]=b;return;}
t[b]=a;
++h[a];
}
inline bool check(int a, int b)
{
while(a!=t[a])a=t[a];
while(b!=t[b])b=t[b];
return(a==b);
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i)t[i]=i,h[i]=1;
for(int q=0;q<m;++q)
{
scanf("%d%d%d",&o,&a,&b);
switch(o)
{
case 1:
{
uneste(a,b);
break;
}
case 2:
{
if(check(a,b))printf("DA\n");else printf("NU\n");
break;
}
}
}
return 0;
}