Pagini recente » Cod sursa (job #781226) | Cod sursa (job #3228200) | Cod sursa (job #2115509) | Cod sursa (job #2533588) | Cod sursa (job #1414426)
#include <cstdio>
#define NMAX 100005
using namespace std;
int n,query,x,y,type;
int nr[NMAX],tata[NMAX];
inline int boss(int nod)
{
int rad=nod;
while (rad!=tata[rad])
rad=tata[rad];
while (nod!=tata[nod])
{
tata[nod]=rad;
nod=tata[nod];
}
return rad;
}
inline void reuneste(int poz1,int poz2)
{
if (nr[poz1]<nr[poz2])
{
tata[poz2]=poz1;
nr[poz1]+=nr[poz2];
}
else
{
tata[poz1]=poz2;
nr[poz2]+=nr[poz1];
}
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d %d",&n,&query);
for (int i=1;i<=n;i++)
{
nr[i]=1;
tata[i]=i;
}
for (int i=1;i<=query;i++)
{
scanf("%d %d %d",&type,&x,&y);
if (type==1)
reuneste(boss(x),boss(y));
else
printf(boss(x)==boss(y)?"DA\n":"NU\n");
}
fclose(stdin);
fclose(stdout);
}