Pagini recente » Cod sursa (job #947188) | Cod sursa (job #3182383) | Cod sursa (job #3212378) | Cod sursa (job #2678603) | Cod sursa (job #2629240)
#include <bits/stdc++.h>
using namespace std;
int *parent, *children;
int _find (int x) {
if (parent[x]==x)
return x;
return parent[x]=_find(parent[x]);
}
void _union (int x, int y) {
x=_find(x);
y=_find(y);
if (x!=y)
if (children[x] > children[y]) {
parent[x] = y;
children[y] += children[x];
}
else {
parent[y] = x;
children[x] += children[y];
}
}
int main () {
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
int n, m;
fin >> n >> m;
parent=new int[n+1];
children=new int[n+1];
iota(parent, parent+n+1, 0);
fill(children, children+n+1, 1);
int i, j, k;
for (; m; m--) {
fin >> k >> i >> j;
if (k==1)
_union(i, j);
else
fout << (_find(i) == _find(j)?"DA\n":"NU\n");
}
return 0;
}