Pagini recente » Cod sursa (job #2221510) | Cod sursa (job #2726556) | Cod sursa (job #2423658) | Cod sursa (job #699801) | Cod sursa (job #2817663)
#include <iostream>
#include <stdio.h>
#include <unordered_map>
using namespace std;
int32_t parents(int32_t *sets, int32_t a) {
if(a == sets[a]) {
return a;
}
sets[a] = parents(sets, sets[a]);
return sets[a];
}
void add(int32_t *sets, int32_t a, int32_t b) {
sets[parents(sets, b)] = parents(sets, a);
}
int main() {
FILE *fd = fopen("disjoint.in", "r+");
FILE *fr = fopen("disjoint.out", "w+");
int32_t n, m, *sets;
fscanf(fd, "%d %d", &n, &m);
sets = (int32_t *)malloc((n + 1) * sizeof(int32_t));
for(int32_t i = 1; i <= n; i++) {
sets[i] = i;
}
for(int32_t i = 0; i < m; i++) {
int32_t a, b, c;
fscanf(fd, "%d %d %d", &a, &b, &c);
if(a == 1) {
add(sets, b, c);
}
else {
fprintf(fr, "%s\n", parents(sets, b) == parents(sets, c) ? "DA" : "NU");
}
}
}