Pagini recente » Cod sursa (job #1838358) | Cod sursa (job #1382481) | Cod sursa (job #86665) | Cod sursa (job #2634776) | Cod sursa (job #277815)
Cod sursa(job #277815)
#include <stdio.h>
#define dim 100000
int n, m, rg[dim], tt[dim];
int find(int x)
{
int r, y;
for (r=x; r!=tt[r]; r=tt[r]);
while (x!=tt[x])
{
y=tt[x];
tt[x]=r;
x=y;
}
return r;
}
void unite(int x, int y)
{
if (rg[x]>rg[y]) tt[y]=x;
else tt[x]=y;
if (rg[x]==rg[y]) rg[y]++;
}
int main()
{
int i, c, x, y;
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
scanf("%d %d\n", &n, &m);
for (i=1; i<=n; i++)
{
rg[i]=1;
tt[i]=i;
}
for (; m; m--)
{
scanf("%d %d %d\n", &c, &x, &y);
if (c==2)
{
if (find(x)==find(y)) printf("DA\n");
else printf("NU\n");
}
else
unite(x, y);
}
return 0;
}