Pagini recente » Cod sursa (job #623321) | Cod sursa (job #1958870) | Cod sursa (job #842393) | Cod sursa (job #599445) | Cod sursa (job #2112112)
#include <iostream>
#include <cstdio>
#define nmax 100005
using namespace std;
int p[nmax], r[nmax], n, m;
int find_set(int x) {
if(p[x] == x)
return x;
p[x] = find_set(p[x]);
return p[x];
}
void unite(int x, int y) {
int sx = find_set(x);
int sy = find_set(y);
if(r[sx] < r[sy])
p[sx] = sy;
else
if(r[sx] > r[sy])
p[sy] = sx;
else {
p[sx] = sy;
r[sy]++;
}
}
int main() {
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
cin >> n >> m;
for(int i = 1;i <= n; ++i)
p[i] = i;
int x, op, y;
for(int i = 0; i < m; ++i) {
cin >> op >> x >> y;
if(op == 1)
unite(x,y);
else
if(find_set(x) == find_set(y))
cout << "DA\n";
else
cout << "NU\n";
}
return 0;
}