Pagini recente » Cod sursa (job #3270449) | Cod sursa (job #2186678) | Cod sursa (job #2118646) | Cod sursa (job #3265177) | Cod sursa (job #2700987)
#include <stdio.h>
int sef[100001];
int find(int i) {
if (sef[i] == i) {
return i;
}
return sef[i] = find(sef[i]);
}
void Union(int i, int j) {
int sefi, sefj;
sefi = find(i);
sefj = find(j);
sef[sefj] = sefi;
}
int main() {
FILE *fin, *fout;
fin = fopen("disjoint.in", "r");
fout = fopen("disjoint.out", "w");
int n, m, c, mm, i, j;
fscanf(fin, "%d%d", &n, &m);
for (i=1; i<=n; i++) {
sef[i] = i;
}
for (mm=0; mm<m; mm++) {
fscanf(fin, "%d", &c);
fscanf(fin, "%d%d", &i, &j);
if (c==1) {
Union(i, j);
} else {
if (find(i) == find(j)) {
fprintf(fout, "DA\n");
} else {
fprintf(fout, "NU\n");
}
}
}
fclose(fin);
fclose(fout);
return 0;
}