Pagini recente » Cod sursa (job #778015) | Cod sursa (job #2827700) | Cod sursa (job #1015171) | Cod sursa (job #2317423) | Cod sursa (job #260589)
Cod sursa(job #260589)
#include <stdio.h>
int n,m,cod,x,y,Tx,Ty;
int tata[100010];
int niv[100100];
int rad(int x)
{
int aux=x;
while (tata[x]!=x)
{
x=tata[x];
}
while (tata[aux]!=aux)
{
aux=tata[aux];
tata[aux]=x;
}
return x;
}
void rez()
{
Tx=rad(x);
Ty=rad(y);
if (Tx==Ty)
return ;
else
{
if (niv[Tx]>niv[Ty])
tata[Ty]=Tx;
else
tata[Tx]=Ty;
if (niv[Tx]==niv[Ty])
niv[Ty]++;
}
}
int main()
{
freopen ("disjoint.in","r",stdin);
freopen ("disjoint.out","w",stdout);
scanf ("%d %d",&n,&m);
for (int i=1;i<=n;i++)
tata[i]=i;
for (int i=0;i<m;i++)
{
scanf ("%d %d %d",&cod,&x,&y);
if (cod==2)
{
Tx=rad(x);
Ty=rad(y);
printf("%s\n",((Tx==Ty)?"DA":"NU"));
}
else
rez();
}
return 0;
}