Pagini recente » Cod sursa (job #2774810) | Cod sursa (job #218884) | Cod sursa (job #2208027) | Cod sursa (job #1600591) | Cod sursa (job #2905042)
#include <bits/stdc++.h>
// #include <vector>
using namespace std;
#define NMAX 100005
int parents[NMAX];
int ranks[NMAX];
int find(int x) {
while (x != parents[x]) {
x = parents[x];
}
return x;
}
void unite(int x, int y) {
if (ranks[x] < ranks[y]) {
parents[x] = parents[y];
ranks[y] += ranks[x];
} else {
parents[y] = parents[x];
ranks[x] += ranks[y];
}
}
int main(void) {
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
int n; cin >> n;
int m; cin >> m;
for (int i = 1; i <= n; ++i) {
parents[i] = i;
ranks[i] = 0;
}
for (int i = 0; i < m; ++i) {
int op; cin >> op;
int x, y; cin >> x >> y;
if (op == 1) {
unite(x, y);
} else {
if (find(x) == find(y)) {
cout << "DA" << '\n';
} else {
cout << "NU" << '\n';
}
}
}
return 0;
}