Pagini recente » Cod sursa (job #297325) | Cod sursa (job #1472255) | Cod sursa (job #1136419) | Cod sursa (job #686161) | Cod sursa (job #228324)
Cod sursa(job #228324)
#include <cstdio>
const int maxn = 100001;
FILE *in = fopen("disjoint.in","r"), *out = fopen("disjoint.out","w");
int n, m;
int t[maxn], h[maxn];
void merge(int x, int y)
{
if ( h[x] > h[y] )
t[y] = x;
else
t[x] = y;
if ( h[x] == h[y] )
++h[x];
}
int find(int x)
{
if ( t[x] == x )
return x;
t[x] = find(t[x]);
return t[x];
}
int main()
{
fscanf(in, "%d %d", &n, &m);
for ( int i = 1; i <= n; ++i )
t[i] = i;
int x, y, z;
for ( int i = 0; i < m; ++i )
{
fscanf(in, "%d %d %d", &x, &y, &z);
if ( x == 1 )
merge(y, z);
else
find(y) == find(z) ? fprintf(out, "DA\n") : fprintf(out, "NU\n");
}
return 0;
}