Pagini recente » Cod sursa (job #2229025) | Cod sursa (job #2449549) | Cod sursa (job #40524) | Cod sursa (job #2237083) | Cod sursa (job #2848729)
#include <stdio.h>
#include <stdlib.h>
#define MAXX 100001
int p[MAXX];
int find(int c) {
if(c == p[c])
return c;
return p[c] = find(p[c]);
}
void unire(int i, int j) {
int sefi, sefj;
sefi = find(i);
sefj = find(j);
p[sefj] = sefi;
}
int main(){
FILE *fin, *fout;
int i, n, m, j, x, cer, sefi, sefj;
fin = fopen("disjoint.in", "r");
fout = fopen("disjoint.out", "w");
fscanf(fin, "%d%d", &n, &m);
for(i = 1; i < n; i++)
p[i] = i;
for(x = 0; x < m; x++) {
fscanf(fin, "%d%d%d", &cer, &i, &j);
if(cer == 1)
unire(i, j);
else {
sefi = find(i);
sefj = find(j);
if(sefi == sefj)
fprintf(fout, "DA\n");
else
fprintf(fout, "NU\n");
}
}
fclose(fin);
fclose(fout);
return 0;
}