Pagini recente » Cod sursa (job #3127861) | Cod sursa (job #684113) | Cod sursa (job #646147) | Cod sursa (job #55025) | Cod sursa (job #634036)
Cod sursa(job #634036)
#include <fstream>
#include <stdio.h>
using namespace std;
const int maxn = 100005;
int n,m,tata[maxn],niv[maxn],rx,ry;
int radacina(int x)
{
int aux,c=0,rad;
aux=x;
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[ry]=rx;
else
tata[rx]=ry;
}
int main()
{
int x,y,cod;
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(;m;m--)
{
scanf("%d%d%d",&cod,&x,&y);
rx=radacina(x);
ry=radacina(y);
if(cod==1) unire(x,y);
else if(rx==ry) printf("DA\n");
else printf("NU\n");
}
return 0;
}