Pagini recente » Cod sursa (job #193795) | Cod sursa (job #713783) | Cod sursa (job #2184471) | Cod sursa (job #4249) | Cod sursa (job #2286913)
#include <stdio.h>
#define MAX 100001
FILE *fin,*fout;
int p[MAX],st[MAX];
int find(int x){
int sp=0;
while(p[x]!=x){
st[sp++]=x;
x=p[x];
}
for(int i=0; i<sp; i++)
p[st[i]]=x;
return x;
}
void Union(int x, int y){
int m1=find(x);
int m2=find(y);
p[y]=x;
}
int main(){
fin=fopen("disjoint.in","r");
fout=fopen("disjoint.out","w");
int n,m,i,tip,x,y;
fscanf(fin,"%d%d",&n,&m);
for(i=1; i<=n; i++)
p[i]=i;
for(i=0; i<m; i++){
fscanf(fin,"%d%d%d",&tip,&x,&y);
if(tip==1)
Union(x,y);
else if(find(x)==find(y))
fprintf(fout,"DA\n");
else
fprintf(fout,"NU\n");
}
fclose(fin);
fclose(fout);
return 0;
}