Pagini recente » Statistici Oros Vladimir Maxim (OrosVladimir) | Monitorul de evaluare | Cod sursa (job #1261316) | Cod sursa (job #2302660) | Cod sursa (job #2269539)
#include <stdio.h>
#define N 100001
int T[N];
int sef(int x)
{
if (x != T[x])
T[x] = sef(T[x]);
return T[x];
}
void join(int x, int y)
{
int t1 = sef(x);
int t2 = sef(y);
T[t2] = t1;
}
int query(int x, int y)
{
int t1 = sef(x);
int t2 = sef(y);
if (t1 == t2)
return 1;
return 0;
}
int main()
{
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
int n, m, i, q, a, b;
scanf("%d%d", &n, &m);
for (i = 1; i <= n; i++)
T[i] = i;
for (i = 1; i <= m; i++)
{
scanf("%d%d%d", &q, &a, &b);
if (q == 1)
join(a, b);
else if (query(a, b) == 1)
printf("DA\n");
else
printf("NU\n");
}
return 0;
}