Pagini recente » Cod sursa (job #431747) | Cod sursa (job #476027) | Cod sursa (job #29669) | Cod sursa (job #2183268) | Cod sursa (job #2580869)
#include <bits/stdc++.h>
using namespace std;
int n,m,tata[100003],lungime[100003];
int find_root (int nod) {
if(tata[nod]==nod)
return nod;
else {
tata[nod]=find_root(tata[nod]);
return tata[nod];
}
}
void union_tree (int x, int y) {
x=find_root(x);y=find_root(y);
if(x!=y) {
if(lungime[x]>lungime[y])
tata[y]=x;
else if (lungime[x]<lungime[y])
tata[x]=y;
else
tata[y]=x,++lungime[x];
}
}
int main () {
int q,nr,nr1;
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d", &n, &m);++m;
for(int i=1;i<=n;++i)
tata[i]=i;
while(--m) {
scanf("%d%d%d", &q, &nr, &nr1);
if(q==1)
union_tree(nr,nr1);
else
if(find_root(nr)==find_root(nr1))
printf("DA\n");
else
printf("NU\n");
}
return 0;
}