Pagini recente » Cod sursa (job #2660453) | Cod sursa (job #433785) | Cod sursa (job #1308651) | Cod sursa (job #2378125) | Cod sursa (job #423500)
Cod sursa(job #423500)
#include<stdio.h>
#define NMAX 100100
int x[NMAX],rang[NMAX],i,j,a,b,k,n,m;
int find(int k)
{
if (k!=x[k])
x[k]=find(x[k]);
return x[k];
}
void add(int k)
{
x[k]=k;
rang[k]=0;
}
void join(int a , int b)
{
if (rang[a]>rang[b])
x[b]=a;
else
{
x[a]=b;
if (rang[a]==rang[b])
rang[b]++;
}
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d",&n,&m);
for (i=1;i<=n;i++)
add(i);
for (i=1;i<=m;i++)
{
scanf("%d%d%d",&k,&a,&b);
if (k==1)
join(find(a),find(b));
else
if (x[find(a)]==x[find(b)])
printf("DA\n");
else
printf("NU\n");
}
return 0;
}