Pagini recente » Cod sursa (job #911371) | Cod sursa (job #2054213) | Cod sursa (job #2181615) | Cod sursa (job #701903) | Cod sursa (job #563633)
Cod sursa(job #563633)
#include <stdio.h>
int i,n,m,x,y,x1,y1,c;
int r[100001],t[100001];
int find(int x) {
if (x!=t[x]) t[x]=find(t[x]);
return t[x];
}
void reuneste(int x,int y) {
if (r[x]>r[y]) {
t[y]=x;
r[x]++;
}
else {
t[x]=y;
r[y]++;
}
}
int main () {
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d",&n,&m);
for (i=1; i<=n; i++) {
t[i]=i;
r[i]=0;
}
for (i=1; i<=m; i++) {
scanf("%d%d%d",&c,&x,&y);
if (c==1) {
x1=find(x);
y1=find(y);
reuneste(x1,y1);
}
else
if (find(x)==find(y)) printf("DA\n");
else printf("NU\n");
}
return 0;
}