Pagini recente » Cod sursa (job #1602939) | Cod sursa (job #1100108) | Cod sursa (job #253741) | Cod sursa (job #2259379) | Cod sursa (job #1642528)
#include <cstdio>
#include <algorithm>
using namespace std;
int rad[100010],size[100010];
int radacina(int nod)
{
int i=nod,j=nod;
for(;i!=rad[i];i=rad[i]);
while(j!=i)
{
int aux=rad[j];
rad[j]=i;
j=aux;
}
return i;
}
int main()
{
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
int n,m,x,y,tip;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
rad[i]=i;
size[i]=1;
}
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&tip,&x,&y);
if(tip==1)
{
x=radacina(x);y=radacina(y);
if(size[x]<size[y]) swap(x,y);
rad[y]=x;
size[x]+=size[y];
}
else
{
if(radacina(x)==radacina(y)) printf("DA\n");
else printf("NU\n");
}
}
return 0;
}