Pagini recente » Cod sursa (job #773035) | Cod sursa (job #1689145) | Cod sursa (job #1906964) | Cod sursa (job #2765170) | Cod sursa (job #2515856)
#include <stdio.h>
int A[100000];
int root( int i ) {
int node, poz;
node = A[i];
poz = i;
while ( node > 0 ) {
poz = node;
node = A[node];
}
return poz;
}
int main() {
FILE *fin = fopen( "disjoint.in", "r" );
FILE *fout = fopen( "disjoint.out", "w" );
int n, m, i, op, x, y, rx, ry;
fscanf( fin, "%d%d", &n, &m );
for ( i = 1; i <= n; ++i ) {
A[i] = -1;
}
for ( i = 0; i < m; ++i ) {
fscanf( fin, "%d%d%d", &op, &x, &y );
if ( op == 2 ) {
rx = root( x );
ry = root( y );
if ( rx != x ) {
A[x] = rx;
}
if ( ry != y ) {
A[y] = ry;
}
if ( rx == ry ) {
fprintf( fout, "DA\n" );
} else {
fprintf( fout, "NU\n" );
}
} else {
rx = root( x );
ry = root( y );
if ( ry != x ) {
A[x] = ry;
}
if ( ry != y ) {
A[y] = ry;
}
A[rx] = ry;
}
}
fclose( fin );
fclose( fout );
return 0;
}