Pagini recente » Cod sursa (job #1810349) | Cod sursa (job #417604) | Cod sursa (job #145886) | Cod sursa (job #2328333) | Cod sursa (job #2845005)
#include <stdio.h>
#include <stdlib.h>
int sef[100000];///uitasem vectorul declarat din reflex si am ocupat memorie in surplus:(
int find( int i ){
if(i==sef[i]){
return i;
}else{
return sef[i]=find( sef[i] );
}
}
void unio( int i, int j ){
int sefulluii,sefulluij;
sefulluii=find( i );
sefulluij=find( j );
sef[sefulluij]=sefulluii;
}
int main()
{
FILE *fin,*fout;
int n,m,x,y,z,i,sefy,sefz;
fin=fopen("disjoint.in","r");
fscanf(fin,"%d%d",&n,&m);
for(i=0;i<n;i++){
sef[i]=i;
}
fout=fopen("disjoint.out","w");
for(i=0;i<m;i++){
fscanf(fin,"%d%d%d",&x,&y,&z);
if(x==1){
unio( y-1, z-1 );
}else{
sefy=find( y-1 );
sefz=find( z-1 );
if(sefy==sefz){
fprintf(fout,"DA\n");
}else{
fprintf(fout,"NU\n");
}
}
}
fclose(fin);
fclose(fout);
return 0;
}