Pagini recente » Cod sursa (job #2642983) | Cod sursa (job #1477769) | Cod sursa (job #672557) | Cod sursa (job #2340229) | Cod sursa (job #1041748)
#include <iostream>
#include <cstdio>
#include <algorithm>
FILE *f,*g;
using namespace std;
long T[100010],Rang[100010];
int radacina(long x)
{
long i;
i=x;
while(T[i]!=i)
{
i=T[i];
}
return i;
}
void uneste(long x, long y)
{
if(Rang[x]>Rang[y])
{
T[y]=x;
}
else
{
T[x]=y;
}
if(Rang[x]==Rang[y])
{
Rang[y]++;
}
}
int main()
{
f=fopen("disjoint.in","r");
g=fopen("disjoint.out","w");
long N,M,i,x,y,cod;
fscanf(f,"%ld%ld",&N,&M);
for(i=1;i<=N;i++)
{
T[i]=i;
Rang[i]=1;
}
for(i=1;i<=M;i++)
{
fscanf(f,"%ld%ld%ld",&cod,&x,&y);
if(cod==1)
{
uneste(radacina(x),radacina(y));
}
else
{
if(radacina(x)==radacina(y))
{
fprintf(g,"DA\n");
}
else
{
fprintf(g,"NU\n");
}
}
}
fclose(f);
fclose(g);
return 0;
}