Pagini recente » Cod sursa (job #3275854) | Cod sursa (job #3243595) | Cod sursa (job #3165966) | Cod sursa (job #1079233) | Cod sursa (job #228259)
Cod sursa(job #228259)
#include <stdio.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];
}
void _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);
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);
i == 1 ? _union(i1, i2) : printf("%s\n", i1 == i2 ? "DA" : "NU");
}
return 0;
}