Pagini recente » Cod sursa (job #358802) | Cod sursa (job #2292263) | Cod sursa (job #1002444) | Cod sursa (job #615719) | Cod sursa (job #3039339)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int v[100005];
int h[100005];
int main() {
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; i++) {
v[i] = i;
}
for (int i = 1; i <= m; i++) {
int t, x, y;
cin >> t >> x >> y;
int p1 = x;
vector<int> c1;
while (v[p1] != p1) {
c1.push_back(p1);
p1 = v[p1];
}
int p2 = y;
vector<int> c2;
while (v[p2] != p2) {
c2.push_back(p2);
p2 = v[p2];
}
if (t == 1) {
if (h[p2] == h[p1]) {
h[p1]++;
v[p2] = p1;
for (int i : c2) v[i] = p1;
}
else if(h[p2] > h[p1]) {
v[p1] = p2;
for (int i : c1) v[i] = p2;
}
else if (h[p1] > h[p2]) {
v[p2] = p1;
for (int i : c2) v[i] = p1;
}
}
else {
for (int i : c1) v[i] = p1;
for (int i : c2) v[i] = p2;
if (p1 == p2) {
cout << "DA\n";
}
else cout << "NU\n";
}
}
return 0;
}