Pagini recente » Cod sursa (job #710418) | Cod sursa (job #100320) | Cod sursa (job #1628931) | Cod sursa (job #973404) | Cod sursa (job #2695181)
#include <stdio.h>
#define maxN 100100
int R[maxN], Gr[maxN], N, M;
void update (int x, int y) {
if (R[x] > R[y]) {
Gr[y] = x;
} else {
Gr[x] = y;
}
if (R[x] == R[y]) {
R[y] ++ ;
}
}
int query (int x) {
int R, aux;
for (R = x; R != Gr[R]; R = Gr[R]);
while (Gr[x] != x) {
aux = Gr[x];
Gr[x] = R;
x = aux;
}
return R;
}
int main () {
int i, t, x, y;
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
scanf("%d%d", &N, &M);
for (i = 1; i <= N; ++ i) {
Gr[i] = i;
R[i] = 1;
}
for ( ; M -- ; ) {
scanf("%d%d%d", &t, &x, &y);
if (t == 1) {
update (query(x), query(y));
} else {
puts ((query (x) == query (y)) ? "DA" : "NU");
}
}
return 0;
}