Pagini recente » Cod sursa (job #2457730) | Cod sursa (job #3140545) | Cod sursa (job #87928) | Cod sursa (job #645439) | Cod sursa (job #1999526)
#include <cstdio>
using namespace std;
int p[100000], h[100000];
int f(int x)
{
while(p[x] != x)
x = p[x];
return x;
}
int fi(int x, int y)
{
return (f(x) == f(y));
}
int un(int x, int y)
{
if(h[x] <= h[y])
{
p[x] = y;
h[y]++;
}
else
{
p[y] = x;
h[x]++;
}
}
int main()
{
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
int n, m, u, v, tu, tv, nr;
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; i++)
{
p[i] = i;
h[i] = 1;
}
for(int i = 1; i <= m; i++)
{
scanf("%d", &nr);
scanf("%d%d", &u, &v);
if(nr == 1)
{
tu = f(u);
tv = f(v);
un(tu, tv);
}
else
{
if(fi(u, v)) printf("DA\n");
else printf("NU\n");
}
}
return 0;
}