Pagini recente » Cod sursa (job #1860610) | Cod sursa (job #3144995) | Cod sursa (job #2022899) | Cod sursa (job #1958663) | Cod sursa (job #1398089)
#include <stdio.h>
int v[100001];
int find(int a){
int x,max;
x=a;
while(a!=v[a])
a=v[a];
max=a;
a=x;
while(a!=v[a]){
x=v[a];
a=max;
a=x;
}
return max;
}
void unific(int a,int b){
if(a>b)
v[b]=a;
else
v[a]=b;
find(a);
find(b);
}
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++)
v[i]=i;
for(i=1;i<=m;i++){
fscanf(fin,"%d%d%d",&cer,&x,&y);
if(cer==1)
unific(find(x),find(y));
else{
x=find(x);
y=find(y);
if(x==y)
fprintf(fout,"DA\n");
else
fprintf(fout,"NU\n");
}
}
fclose(fin);
fclose(fout);
return 0;
}