Pagini recente » Cod sursa (job #1599856) | Cod sursa (job #730766) | Cod sursa (job #1613380) | Profil ElenaGaby | Cod sursa (job #1249740)
#include <algorithm>
#include <fstream>
#include <vector>
using namespace std;
struct UF {
vector<int> set;
UF(const int n) : set(n) {
iota(set.begin(), set.end(), 0);
}
int find(int x) {
for (int t = x; set[x] != x; t = x) {
x = set[t];
set[t] = set[set[t]];
}
return x;
}
void merge(int x, int y) {
x = find(x);
y = find(y);
if (x == y) return;
set[y] = x;
}
};
int main() {
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n, q; fin >> n >> q;
for (UF uf(n); q; --q) {
int op, x, y;
fin >> op >> x >> y;
if (op == 1)
uf.merge(x, y);
else {
if (uf.find(x) == uf.find(y))
fout << "DA\n";
else
fout << "NU\n";
}
}
return 0;
}