Pagini recente » Cod sursa (job #93275) | Cod sursa (job #187290) | Cod sursa (job #2518573) | Cod sursa (job #3001538) | Cod sursa (job #2700986)
#include <stdio.h>
#include <stdlib.h>
int sef[100001];
int sef_suprem( int x ) {
if( sef[x] == x )
return x;
return sef[x] = sef_suprem( sef[x] );
}
void unire( int a, int b ) {
int sefa, sefb;
sefa = sef_suprem( a );
sefb = sef_suprem( b );
sef[sefb] = sefa;
}
int main() {
FILE *fin, *fout;
int n, m, tip, x, y, i, sefx, sefy;
fin = fopen( "disjoint.in", "r" );
fout = fopen( "disjoint.out", "w" );
fscanf( fin, "%d%d", &n, &m );
for( i = 1; i <= n; i++ )
sef[i] = i;
for( i = 0; i < m; i++ ) {
fscanf( fin, "%d%d%d", &tip, &x, &y );
if( tip == 1 )
unire( x, y );
else {
sefx = sef_suprem( x );
sefy = sef_suprem( y );
if( sefx == sefy )
fprintf( fout, "DA\n" );
else
fprintf( fout, "NU\n" );
}
}
fclose( fin );
fclose( fout );
return 0;
}