Pagini recente » Cod sursa (job #1470630) | Cod sursa (job #37101) | Cod sursa (job #2604396) | Cod sursa (job #313129) | Cod sursa (job #2348426)
#include <bits/stdc++.h>
int v[100001];
int sz[100001];
int get(int k){
if(v[k]==0) return k;
v[k]=get(v[k]);
return v[k];
}
void mrg(int a,int b){
a=get(a);
b=get(b);
if(sz[a]<sz[b]){
a+=b;
b=a-b;
a=a-b;
}
v[b]=a;
sz[a]+=sz[b];
}
int main()
{
int n,m,cer,a,b,i;
FILE*fi,*fo;
fi=fopen("disjoint.in","r");
fo=fopen("disjoint.out","w");
fscanf(fi,"%d%d",&n,&m);
for(i=0;i<n;i++){
sz[i]=1;
}
for(i=0;i<m;i++){
fscanf(fi,"%d%d%d",&cer,&a,&b);
if(cer==1){
mrg(a,b);
}
else {
if(get(a)==get(b))
fprintf(fo,"DA\n");
else fprintf(fo,"NU\n");
}
}
fclose(fi);
fclose(fo);
return 0;
}