Pagini recente » Cod sursa (job #2385643) | Cod sursa (job #2849886) | Cod sursa (job #46037) | Cod sursa (job #746191) | Cod sursa (job #2848541)
#include <stdio.h>
#define N_MAX 100000
int v[N_MAX + 1];
int myFind(int x);
void myUnite(int x, int y) {
int a, b;
a = myFind(x);
b = myFind(y);
if (a != b)
v[a] = b;
}
int myFind(int x) {
if (x == v[x])
return x;
return v[x] = myFind(v[x]);
}
int main() {
FILE *fin, *fout;
int n, m;
int i, op;
int x, y;
fin = fopen("disjoint.in", "r");
fout = fopen("disjoint.out", "w");
fscanf(fin, "%d%d", &n, &m);
for (i = 1; i <= n; i++)
v[i] = i;
for (i = 0; i < m; i++) {
fscanf(fin, "%d%d%d", &op, &x, &y);
if (op == 1) {
myUnite(x, y);
} else {
if (myFind(x) == myFind(y))
fprintf(fout, "DA\n");
else
fprintf(fout, "NU\n");
}
}
fclose(fin);
fclose(fout);
return 0;
}