Pagini recente » Cod sursa (job #2837063) | Cod sursa (job #2982641) | Cod sursa (job #643257) | Cod sursa (job #174555) | Cod sursa (job #2029207)
#include <cstdio>
#define MAX_N 100000
int N, M;
int boss[MAX_N + 1];
const char *ans[2] = {"NU", "DA"};
void init() {
int u;
for (u = 1; u <= N; u++) {
boss[u] = u;
}
}
int find(int u) {
int r = u, tmp;
while (r != boss[r]) {
r = boss[r];
}
while (u != r) {
tmp = boss[u];
boss[u] = r;
u = tmp;
}
return r;
}
void unify(int u, int v) {
boss[find(v)] = find(u);
}
int main(void) {
int i, task, a, b;
FILE *f = fopen("disjoint.in", "r");
freopen("disjoint.out", "w", stdout);
fscanf(f, "%d %d", &N, &M);
init();
for (i = 1; i <= M; i++) {
fscanf(f, "%d %d %d", &task, &a, &b);
if (task == 1) {
unify(a, b);
} else {
fprintf(stdout, "%s\n", ans[find(a) == find(b)]);
}
}
fclose(f);
fclose(stdout);
return 0;
}