Pagini recente » Cod sursa (job #2912997) | Cod sursa (job #2018069) | wer | hlo_cj_av_l2 | Cod sursa (job #2841189)
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int t[100001], dim[100001], n, m;
vector<int>rez;
int radacina(int x) {
if (x == t[x]) return x;
else return t[x] = radacina(t[x]);
}
void union_set(int x, int y) {
int a = radacina(x);
int b = radacina(y);
if (dim[a] < dim[b]) dim[b] += dim[a], t[a] = b;
else dim[a] += dim[b], t[b] = a;
}
int main() {
in >> n >> m;
for (int i = 1; i <= n; i++) t[i] = i, dim[i] = 1;
for (int i = 0; i < m; i++) {
int task, x, y;
in >> task >> x >> y;
if (task == 1) {
if (radacina(x) != radacina(y)) union_set(x, y);
}
else {
if (radacina(x) == radacina(y)) rez.push_back(1);
else rez.push_back(0);
}
}for (auto i : rez)
if (i) out << "DA" << '\n';
else out << "NU" << '\n';
return 0;
}