Pagini recente » Cod sursa (job #2378160) | Cod sursa (job #645119) | Cod sursa (job #490710) | Cod sursa (job #2661984) | Cod sursa (job #2206215)
#include<stdio.h>
int x[100005],t[100005],nr[100005],n,m;
int cauta(int x)
{
int i=x;
while(t[x]!=x)
{
x=t[x];
}
t[i]=x;
return x;
}
int main()
{
FILE *f,*g;
int i,x,y,tx,ty,o;
f=fopen("disjoint.in","r");
g=fopen("disjoint.out","w");
fscanf(f,"%d %d",&n,&m);
for(i=1;i<=n;i++)
{
nr[i]=1;
t[i]=i;
}
for(i=1;i<=m;i++)
{
fscanf(f,"%d%d%d",&o,&x,&y);
if(o==1)
{
tx=cauta(x);
ty=cauta(y);
if(tx<ty)
{
t[tx]=ty;
nr[ty]+=tx;
}
else
{
t[ty]=tx;
nr[tx]+=ty;
}
}
if(o==2)
{
tx=cauta(x);
ty=cauta(y);
if(tx==ty)
fprintf(g,"DA\n");
else
fprintf(g,"NU\n");
}
}
}