Pagini recente » Cod sursa (job #2280684) | Cod sursa (job #64914) | Cod sursa (job #2774740) | Cod sursa (job #659997) | Cod sursa (job #641618)
Cod sursa(job #641618)
#include<stdio.h>
#define Max 100005
using namespace std;
int tata[Max],niv[Max],nr_elem,nr_operatii,operatie,x,y,radx,rady;
int radacina (int nod)
{
int aux,c=0,rad;
aux=nod;
while(aux!=tata[aux])
{
aux=tata[aux];
c++;
}
rad=aux;
aux=x;
while(aux!=tata[aux])
{
niv[aux]=c;
tata[aux]=rad;
aux=tata[aux]; }
return rad;
}
void unire(int x,int y)
{
if (niv[x]>=niv[y])
tata[rady]=radx;
else
tata[radx]=rady;
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d",&nr_elem,&nr_operatii);
for (int i=0;i<=nr_elem;++i)
tata[i]=i;
for(int i=1;i<=nr_operatii;++i)
{ scanf("%d%d%d",&operatie,&x,&y);
radx=radacina(x);
rady=radacina(y);
if (operatie==1)
unire(x,y);
else
if (radx==rady)
printf("DA\n");
else
printf("NU\n");
}
return 0;
}