Pagini recente » Cod sursa (job #2140275) | Cod sursa (job #2392709) | Cod sursa (job #896264) | Cod sursa (job #1383354) | Cod sursa (job #558842)
Cod sursa(job #558842)
#include <stdio.h>
int h[100001];
int t[100001];
int n, m;
int i, j, k, o;
void Union(int a, int b);
int Parent(int a);
int main()
{
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
scanf("%d %d", &n, &m);
for ( i = 1; i <= n; i++ ) h[i] = 1, t[i] = i;
for ( k = 1; k <= m; k++ )
{
scanf("%d %d %d", &o, &i, &j);
if ( o == 1 ) if ( Parent(i) != Parent(j) ) Union(t[i], t[j]);
if ( o == 2 ) printf("%s\n", (Parent(i) == Parent(j) ? "DA" : "NU"));
}
return 0;
}
void Union(int a, int b)
{
if ( h[a] > h[b] )
t[b] = a;
else
{
t[a] = b;
if ( h[a] == h[b] )
h[b]++;
}
}
int Parent(int a)
{
if ( t[a] != a ) t[a] = Parent(t[a]);
return t[a];
}