Pagini recente » Cod sursa (job #2593481) | Cod sursa (job #130309) | Cod sursa (job #2908823) | Cod sursa (job #47173) | Cod sursa (job #3135126)
#include <iostream>
#include <vector>
using namespace std;
int a[100001];
int find(int x) {
if(a[x] < 0) return x;
int nr = find(a[x]);
return nr;
}
void unire(int x, int y) {
if(x > y) swap(x, y);
a[x] += a[y];
a[y] = x;
}
int main() {
FILE *ptr = fopen("disjoint.in", "r");
FILE *ptw = fopen("disjoint.out", "w");
int N, C, X, Y, M;
fscanf(ptr, "%d%d", &N, &M);
for(int i = 1; i <= N; i++) {
a[i] = -1;
}
for(int i = 1; i <= M; i++) {
fscanf(ptr, "%d%d%d", &C, &X, &Y);
if(C == 1) {
unire(find(X), find(Y));
}
else {
if(find(X) == find(Y)) {
fprintf(ptw, "DA\n");
}
else {
fprintf(ptw, "NU\n");
}
}
}
}