Pagini recente » Cod sursa (job #2955085) | Cod sursa (job #893542) | Cod sursa (job #2553627) | Cod sursa (job #355789) | Cod sursa (job #1228629)
#include <cstdio>
using namespace std;
int rad[100010],dim[100010],n,m,i,a,x,y;
void unire(int x,int y)
{
if(dim[x]>=dim[y]) rad[y]=x;
else rad[x]=y;
if(dim[x]==dim[y]) dim[x]++;
}
int radacina(int x)
{
int i,j;
for(i=x;rad[i]!=i;i=rad[i]);
for(j=x;rad[j]!=i;j=rad[j]) rad[j]=i;
return i;
}
int main()
{
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
rad[i]=i;
dim[i]=1;
}
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&a,&x,&y);
if(a==1) unire(radacina(x),radacina(y));
else if(radacina(x)==radacina(y)) printf("DA\n");
else printf("NU\n");
}
return 0;
}