Pagini recente » Cod sursa (job #2022986) | Cod sursa (job #1511545) | Clasament 1_24_2010 | Cod sursa (job #2247234) | Cod sursa (job #1279380)
#include <cstdio>
using namespace std;
const int NMAX = 100005;
int t[NMAX], h[NMAX];
int findx(int x)
{
while(x != t[x])
x = t[x];
return x;
}
void uniset(int x, int y)
{
if(h[x] == h[y])
{
t[y] = x;
++h[x];
}else
if(h[x] > h[y]){
t[y] = x;
}
else
t[x] = y;
}
int main()
{
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
int n, m, op, x, y;
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; ++ i)
t[i] = i;
for(int i = 1; i <= m; ++ i)
{
scanf("%d%d%d", &op, &x, &y);
if(op == 1)
uniset(x,y);
else
{
if(findx(x) == findx(y)) printf("DA\n");
else
printf("NU\n");
}
}
return 0;
}