Pagini recente » Cod sursa (job #1657555) | Cod sursa (job #852350) | Cod sursa (job #1468371) | Cod sursa (job #1142393) | Cod sursa (job #302150)
Cod sursa(job #302150)
#include<stdio.h>
FILE *f,*g;
long x,y,tata[100001],n,m,i,aux1,aux2,level1,level2,op;
void uneste(long x,long y)
{ level1=0; aux1=x; while(tata[aux1]!=0) { aux1=tata[aux1]; level1++; } level1++;
level2=0; aux2=y; while(tata[aux2]!=0) { aux2=tata[aux2]; level2++; } level2++;
if(level1>level2) tata[aux2]=aux1; else tata[aux1]=aux2;
}
void find(long x,long y)
{ aux1=x; while(tata[aux1]!=0) aux1=tata[aux1];
aux2=y; while(tata[aux2]!=0) aux2=tata[aux2];
if(aux1==aux2) fprintf(g,"DA\n"); else fprintf(g,"NU\n");
}
int main()
{ f=fopen("disjoint.in","r"); g=fopen("disjoint.out","w");
fscanf(f,"%ld%ld",&n,&m);
for(i=1;i<=m;i++)
{ fscanf(f,"%ld%ld%ld",&op,&x,&y);
if(op==1) uneste(x,y); else find(x,y);
}
fclose(g);
return 0;
}