Pagini recente » Cod sursa (job #2508380) | Cod sursa (job #2949732) | Cod sursa (job #2983838) | Cod sursa (job #889122) | Cod sursa (job #2801383)
#include <stdio.h>
#define MMAX 100000
int sef[MMAX+1];
int find( int i ) {
if(sef[i]==i)
return i;
return sef[i]=find(sef[i]);
}
void unionm(int i,int j) {
int sefi, sefj;
sefi=find(i);
sefj=find(j);
sef[sefj]=sefi;
}
int main() {
FILE *fin,*fout;
fin=fopen("disjoint.in","r");
fout=fopen("disjoint.out","w");
int n,m,i,c,x,y;
fscanf(fin,"%d%d",&m,&n);
for(i=1;i<=MMAX;i++)/// seful fiecarui numar (la inceput) este el insusi
sef[i]=i;
for(i=0;i<n;i++) {
fscanf(fin,"%d%d%d",&c,&x,&y);
if(c==1)
unionm(x,y);
else
if(find(x)==find(y))
fprintf(fout,"DA\n");
else
fprintf(fout,"NU\n");
}
fclose(fin);
fclose(fout);
return 0;
}