Pagini recente » Cod sursa (job #492395) | Cod sursa (job #1605232) | Cod sursa (job #269085) | Cod sursa (job #3175598) | Cod sursa (job #657624)
Cod sursa(job #657624)
#include <stdio.h>
#define NMAX 100100
int dad[NMAX], R[NMAX];
inline int getFather (int root)
{
int node = root;
while (root != dad[root])
root = dad[root];
while (node != root)
dad[node] = root, node = dad[node];
return root;
}
int main ()
{
int N, M, i, x, y, tip;
freopen ("nor.in", "r", stdin);
freopen ("nor.out", "w", stdout);
scanf ("%d%d", &N, &M);
for (i = 1; i <= N; i ++)
dad[i] = i, R[i] = 1;
for (i = 1; i <= M; i ++)
{
scanf ("%d%d%d", &tip, &x, &y);
x = getFather (x);
y = getFather (y);
if (tip == 2)
{
if (x == y)
printf ("DA\n");
else
printf ("NU\n");
continue;
}
if (R[x] < R[y])
{
R[y] = R[y] + R[x];
R[x] = 0;
dad[x] = y;
}
else
{
R[x] = R[x] + R[y];
R[y] = 0;
dad[y] = x;
}
}
return 0;
}