Pagini recente » Cod sursa (job #284861) | Cod sursa (job #2811456) | Cod sursa (job #2955779) | Cod sursa (job #2868165) | Cod sursa (job #2848029)
#include <stdio.h>
#include <stdlib.h>
#define NMAX 100000
int sef[NMAX];
int find( int i ) {
if( sef[i] == i )
return i;
return sef[i] = find( sef[i] );
}
void unire( int i, int j ) {
int sefi, sefj;
sefi = find( i );
sefj = find( j );
sef[sefj] = sefi;
}
int main() {
FILE *fin, *fout;
int n, m, i, c, x, y, sefi, sefj;
fin = fopen( "disjoint.in", "r" );
fout = fopen( "disjoint.out", "w" );
fscanf( fin, "%d%d", &n, &m );
for( i = 0; i < n; i++ )
sef[i] = i;
for( i = 0; i < m; i++ ) {
fscanf( fin, "%d%d%d", &c, &x, &y );
switch( c ) {
case 1:
unire( x, y );
break;
default:
sefi = find( x );
sefj = find( y );
if( sefi == sefj )
fprintf( fout, "DA\n" );
else
fprintf( fout, "NU\n" );
}
}
fclose( fin );
fclose( fout );
return 0;
}