Pagini recente » Cod sursa (job #112880) | Cod sursa (job #2169281) | Cod sursa (job #2179764) | Cod sursa (job #1828693) | Cod sursa (job #1097663)
#include <cstdio>
#include <algorithm>
using namespace std;
int i,aux,n,k,j,p,tata[101009],m,st,s,stmax,drmax,smax,nr,sol,x,y,caz;
int max(int a,int b)
{
if(a>b)
{
return a;
}
return b;
}
void init()
{
for(i=1;i<=n;i++)
{
tata[i]=i;
}
}
int parinte(int p)
{
if(tata[p]==p) return p;
tata[p]=parinte(tata[p]);
return tata[p];
}
void unite(int a,int b)
{
tata[parinte(a)]=parinte(b);
}
int main()
{
freopen ("disjoint.in","r",stdin);
freopen ("disjoint.out","w",stdout);
scanf("%d%d",&n,&m);
init();
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&caz,&x,&y);
if(caz==1)//se cere reuniunea multimilor
{
unite(x,y);
}
else//stabilim daca nodurile fac parte din aceeasi componenta conexa
{
if(parinte(x)==parinte(y))
{
printf("DA\n");
}
else
{
printf("NU\n");
}
}
}
}