Pagini recente » Borderou de evaluare (job #343670) | Cod sursa (job #2962773) | Cod sursa (job #614299) | Cod sursa (job #95907) | Cod sursa (job #1654231)
#include <stdio.h>
#define lim 100005
int sef[lim];
int boss(int x){
if(sef[x]==x)
return x;
sef[x]=boss(sef[x]);
return sef[x];
}
void unire(int x,int y){
sef[boss(x)]=boss(y);
}
int main(){
FILE *fin,*fout;
fin=fopen("disjoint.in","r");
fout=fopen("disjoint.out","w");
int i,n,m,x,y,cer;
fscanf(fin,"%d%d",&n,&m);
for(i=1;i<=n;i++)
sef[i]=i;
for(i=1;i<=m;i++){
fscanf(fin,"%d%d%d",&cer,&x,&y);
if(cer==1)
unire(x,y);
else
if(boss(x)==boss(y))
fprintf(fout,"DA\n");
else
fprintf(fout,"NU\n");
}
fclose(fin);
fclose(fout);
return 0;
}