Pagini recente » Cod sursa (job #3363540) | Cod sursa (job #3362702) | Cod sursa (job #3364460) | Cod sursa (job #3363897) | Cod sursa (job #3364423)
#include <bits/stdc++.h>
using namespace std;
struct Padure {
vector<int> padre;
Padure(int n) {
padre.resize(n + 1);
}
int rad(int a) {
if (padre[a] == 0) {
return a;
}
padre[a] = rad(padre[a]);
return padre[a];
}
void join(int a, int b) {
a = rad(a);
b = rad(b);
if (a != b) {
padre[a] = b;
}
}
bool query(int a, int b) {
return rad(a) == rad(b);
}
};
signed main() {
#ifndef LOCAL
cin.tie(nullptr)->sync_with_stdio(false);
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
#endif
int n, m; cin >> n >> m;
Padure DSU(n);
while (m--) {
int op, x, y; cin >> op >> x >> y;
if (op == 1) {
DSU.join(x, y);
} else {
cout << (DSU.query(x, y) ? "DA" : "NU") << '\n';
}
}
return 0;
}