Pagini recente » Cod sursa (job #1860946) | Cod sursa (job #494974) | Cod sursa (job #2617368) | Cod sursa (job #834984) | Cod sursa (job #826324)
Cod sursa(job #826324)
#include <stdio.h>
long N, M;
long t[100001], h[100001], tip, x, y;
long find(long x) {
if(x == t[x])
return x;
return find(t[x]);
}
long unite(long u, long v) {
if(h[u] == h[v]) {
t[v] = u;
h[u]++;
}
else if(h[u] < h[v])
t[u] = t[v];
else t[v] = t[u];
}
int main() {
long i, j;
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
scanf("%ld %ld", &N, &M);
for(i = 1; i <= N; i++)
t[i] = i;
for(i = 1; i <= M; i++) {
scanf("%ld %ld %ld", &tip, &x, &y);
if(tip == 1)
unite(find(x), find(y));
else if(find(x) == find(y))
printf("DA\n");
else printf("NU\n");
}
return 0;
}