Pagini recente » Cod sursa (job #2604156) | Cod sursa (job #1393343) | Cod sursa (job #47768) | Cod sursa (job #2399633) | Cod sursa (job #253580)
Cod sursa(job #253580)
#include<stdio.h>
FILE *f=fopen("disjoint.in","r"), *g=fopen("disjoint.out","w");
int n,m,cod,x,y,t[100001],h[100001],i;
inline int find(int x)
{
int R,y;
for(R=x; R!=t[R] ; R=t[R]);
while(t[x]!=x)
{
y=t[x];
t[x]=R;
x=y;
}
return R;
}
void uneste(int i, int j)
{
i=find(i);
j=find(j);
if(h[i] < h[j]) t[i]=j;
else t[j]=i;
if(h[i]==h[j]) ++h[i];
}
int main()
{
fscanf(f,"%d %d",&n,&m);
for(i=1;i<=n;i++)
{
h[i]=1;
t[i]=i;
}
for(i=1;i<=m;i++)
{
fscanf(f,"%d %d %d",&cod,&x,&y);
if(cod==1)
uneste(x,y);
else
if(find(x)==find(y)) fprintf(g,"DA\n");
else fprintf(g,"NU\n");
}
fclose(f);
fclose(g);
return 0;
}