Pagini recente » Cod sursa (job #416177) | Cod sursa (job #392510) | Cod sursa (job #787829) | Cod sursa (job #231075) | Cod sursa (job #1193415)
#include <cstdio>
#define Nmax 100010
using namespace std;
int tip,x,y,n,m,i,t[Nmax],rang[Nmax];
inline int multime(int nod)
{
if (t[nod]!=nod)
t[nod]=multime(t[nod]);
return t[nod];
}
void reuneste(int x,int y)
{
x=multime(x);
y=multime(y);
if (x==y) return;
if (rang[x]<rang[y])
t[x]=y;
else t[y]=x;
if (rang[x]==rang[y])
++rang[x];
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d %d", &n, &m);
for (i=1;i<=n;++i) t[i]=i;
for (i=1;i<=m;++i)
{
scanf("%d %d %d", &tip, &x, &y);
if (tip==1)
reuneste(x,y);
else if (multime(x)==multime(y)) printf("DA\n");
else printf("NU\n");
}
return 0;
}