Pagini recente » Cod sursa (job #2526904) | Cod sursa (job #334599) | Cod sursa (job #1015981) | Cod sursa (job #1267559) | Cod sursa (job #2365081)
#include <bits/stdc++.h>
int v[100001];
int sz[100001];
int fnd(int k){
if(v[k]!=0)
{
v[k]=fnd(v[k]);
return v[k];
}
return k;
}
void join(int a,int b){
int x=fnd(a);
int y=fnd(b);
if(sz[y]>sz[x]){
x+=y;
y=x-y;
x=x-y;
}
v[y]=x;
sz[x]+=sz[y];
}
int main()
{
int n,m,a,b,c,i;
FILE*fi,*fo;
fi=fopen("disjoint.in","r");
fo=fopen("disjoint.out","w");
fscanf(fi,"%d%d",&n,&m);
for(i=1;i<=n;i++)
sz[i]=1;
for(i=0;i<m;i++){
fscanf(fi,"%d%d%d",&c,&a,&b);
if(c==1){
join(a,b);
}
else {
a=fnd(a);
b=fnd(b);
if(a==b)
fprintf(fo,"DA\n");
else fprintf(fo,"NU\n");
}
}
fclose(fi);
fclose(fo);
return 0;
}