Pagini recente » Borderou de evaluare (job #2215112) | Borderou de evaluare (job #932238) | Borderou de evaluare (job #158453) | Borderou de evaluare (job #2188281) | Cod sursa (job #2115903)
#include <stdio.h>
#include <stdbool.h>
int v[100001];
int boss(int n) {
if(v[n] == n) return n;
return v[n] = boss(v[n]);
}
void join(int a, int b) {
v[boss(a)] = boss(b);
}
bool query(int a, int b) {
return boss(a) == boss(b);
}
int main() {
int n, m, i, op, a, b;
FILE *fin = fopen("disjoint.in", "r");
FILE *fout = fopen("disjoint.out", "w");
fscanf(fin, "%d%d", &n, &m);
for(i=1; i<=n; i++) v[i] = i;
for(i=1; i<=m; i++) {
fscanf(fin, "%d%d%d", &op, &a, &b);
op == 1 ? join(a, b) : fprintf(fout, query(a, b) ? "DA\n" : "NU\n");
}
fclose(fin);
fclose(fout);
return 0;
}