Pagini recente » Cod sursa (job #916519) | Cod sursa (job #2061552) | Cod sursa (job #2962479) | Statistici onofrei (onoffrei) | Cod sursa (job #227537)
Cod sursa(job #227537)
#include <stdio.h>
#include <assert.h>
#define NMax 100005
int N, M;
int rang[NMax], up[NMax];
int find(int x)
{
if (x != up[x])
up[x] = find(up[x]);
return up[x];
}
int _union(int x, int y)
{
if (rang[x] > rang[y])
up[y] = x;
else
{
up[x] = y;
rang[y] += (rang[x] == rang[y]);
}
}
int main()
{
int i, j, k, i1, i2;
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
scanf("%d %d", &N, &M);
assert(1 <= N && N <= 100000 && 1 <= M && M <= 100000);
for (i = 1; i <= N; ++i)
rang[i] = 1, up[i] = i;
for (; M; --M)
{
scanf("%d %d %d", &i, &j, &k);
i1 = find(j);
i2 = find(k);
if (i == 1)
{
assert(i1 != i2);
_union(i1, i2);
continue;
}
printf("%s\n", i1 == i2 ? "DA" : "NU");
}
return 0;
}