Pagini recente » Cod sursa (job #1595133) | Cod sursa (job #2321035) | Cod sursa (job #2869341) | Cod sursa (job #1498995) | Cod sursa (job #1764416)
#include <stdio.h>
#include <bits/stdc++.h>
using namespace std;
class DisjointSet {
public:
DisjointSet(int size) : size_(size + 1) {
father_.resize(size_);
for (int i = 0; i < size_; i++) {
father_[i] = i;
}
}
int Find(int x) {
if (father_[x] != x) {
father_[x] = Find(father_[x]);
}
return father_[x];
}
void Unite(int x, int y) {
father_[x] = y;
}
private:
int size_;
vector<int> father_;
};
int main() {
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int n, m;
cin >> n >> m;
DisjointSet ds(n);
for (; m; m--) {
int op, x, y;
cin >> op >> x >> y;
if (op == 1) {
ds.Unite(ds.Find(x), ds.Find(y));
} else {
cout << (ds.Find(x) == ds.Find(y) ? "DA" : "NU") << '\n';
}
}
return 0;
}