Pagini recente » Cod sursa (job #3355112) | Cod sursa (job #1708313) | Cod sursa (job #1102287) | Cod sursa (job #1243889) | Cod sursa (job #3343902)
#include <iostream>
#include <vector>
using namespace std;
const int NMAX = 1e5+5;
int N,M;
vector<int> parent(NMAX, -1);
vector<int> marime(NMAX, 1);
int get_rep(int node) {
if (parent[node] == -1)
return node;
return parent[node] = get_rep(parent[node]);
}
void combine(int a, int b) {
if (a == b)
return;
if (marime[a] >= marime[b]) {
parent[b] = a;
marime[a] += marime[b];
}
else {
parent[a] = b;
marime[b] += marime[a];
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
cin >> N >> M;
for (int i=1; i<=M; i++) {
int op,a,b;
cin >> op >> a >> b;
int rep_a = get_rep(a);
int rep_b = get_rep(b);
if (op == 1) {
combine(rep_a, rep_b);
}
else {
if (rep_a == rep_b)
cout << "DA" << "\n";
else
cout << "NU" << "\n";
}
}
return 0;
}