Pagini recente » Cod sursa (job #1223649) | Cod sursa (job #1478354) | Cod sursa (job #1873371) | Cod sursa (job #1734223) | Cod sursa (job #364150)
Cod sursa(job #364150)
#include <cstdio>
#define FIN "disjoint.in"
#define FOUT "disjoint.out"
#define N 100002
int n, m, r[N], d[N];
int root(int x)
{
if (x == r[x])
return x;
r[x] = root(r[x]);
return r[x];
}
void merge(int x, int y)
{
if (d[x] > d[y])
r[y] = x;
else if (d[x] < d[y])
r[x] = y;
else if (x != y)
{
r[x] = y;
++ d[x];
}
}
int main()
{
int i, t, x, y;
freopen(FIN, "r", stdin);
freopen(FOUT, "w", stdout);
scanf("%d%d", &n, &m);
for (i = 1; i <= n; ++ i)
{
r[i] = i;
d[i] = 1;
}
for (i = 1; i <= m; ++ i)
{
scanf("%d%d%d", &t, &x, &y);
if (t == 1)
merge(root(x), root(y));
else
printf(root(x) == root(y) ? "DA\n" : "NU\n");
}
}