Pagini recente » Cod sursa (job #443107) | tema | Cod sursa (job #672781) | Cod sursa (job #2481022) | Cod sursa (job #1669017)
#include <cstdio>
using namespace std;
int h[100001], dad[100001];
int Find(int x) {
int y=x, root;
while(dad[y])y=dad[y];
root=y;
while(dad[x]) {
y=dad[x];
dad[x]=root;
x=y;
}
return root;
}
void Union(int x, int y) {
if(h[x]>h[y])dad[y]=x;
else dad[x]=y;
if(h[x]==h[y])++h[y];
}
int main() {
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
int n, q, i, x, y, task;
scanf("%d%d", &n, &q);
for(i=1; i<=n; ++i)
h[i]=1;
for(i=1; i<=q; ++i) {
scanf("%d%d%d", &task, &x, &y);
if(task==2) {
if(Find(x)==Find(y))
printf("DA\n");
else
printf("NU\n");
}
else
Union(Find(x),Find(y));
}
return 0;
}