Pagini recente » Cod sursa (job #886207) | Cod sursa (job #226408) | Cod sursa (job #2767555) | Cod sursa (job #249999) | Cod sursa (job #249382)
Cod sursa(job #249382)
#include <cstdio>
int p[1<<17], h[1<<17];
int N, M;
void unite (int n1, int n2) {
if (h[n1] > h[n2])
p[n2] = n1;
else {
p[n1] = n2;
if (h[n1] == h[n2])
++h[n2];
}
}
int find (int n) {
if (p[n] == n) return n;
return p[n] = find(p[n]);
}
int main () {
freopen ("disjoint.in", "r", stdin);
freopen ("disjoint.out", "w", stdout);
scanf ("%d %d", &N, &M);
for (int i = 1; i <= N; ++ i) p[i] = i;
int op, x, y;
for (; M; -- M) {
scanf (" %d %d %d", &op, &x, &y);
if (op == 1) unite (p[x], p[y]);
else printf ("%s\n", find(x) == find(y) ? "DA" : "NU");
}
return 0;
}