Pagini recente » Cod sursa (job #1141585) | Cod sursa (job #871741) | Cod sursa (job #1321297) | Cod sursa (job #1231263) | Cod sursa (job #2622919)
#include <stdio.h>
#include <stdlib.h>
#define NMAX 500
int sef[NMAX+1];
void unite(int x,int y){ ///sef[a]=b si toti cei sub a primesc b
int i;
sef[find(x)]=find(y);
}
int find(int x){
if(sef[x]==x){
return x;
}
sef[x]=find(sef[x]);
return sef[x];
}
int verif(int x,int y){
return(find(x)==find(y)); ///au ac sef => sunt in ac multime
}
int main()
{
FILE *fin,*fout;
fin=fopen("disjoint.in","r");
fout=fopen("disjoint.out","w");
int n,m,cod,x,y,i;
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",&cod,&x,&y);
if(cod==1){
unite(x,y);
}
else{
if(verif(x,y)==1)
fprintf(fout,"DA\n");
else
fprintf(fout,"NU\n");
}
}
fclose(fin);
fclose(fout);
return 0;
}