Pagini recente » Cod sursa (job #2785709) | Cod sursa (job #2455114) | Cod sursa (job #660418) | Cod sursa (job #2362640) | Cod sursa (job #229320)
Cod sursa(job #229320)
#include <stdio.h>
#define NMAX 100001
#define MMAX 100001
#define FIN "disjoint.in"
#define FOUT "disjoint.out"
int P[NMAX];
int getParent( int x )
{
int t = x, y;
while ( t != P[t] ) t = P[t];
while ( x != P[x] ) {
y = P[x];
P[x] = t;
x = y;
}
return t;
}
void unify( int x, int y )
{
P[getParent( x )] = getParent( y );
}
int main()
{
FILE *fin = fopen( FIN, "r" );
FILE *fout = fopen( FOUT, "w" );
int N, M, cod, i, x, y;
fscanf( fin, "%d%d", &N, &M );
for( i = 1; i <= N; P[i++] = i );
while ( M-- ) {
fscanf( fin, "%d%d%d", &cod, &x, &y );
if ( cod == 1 ) unify( x, y );
else
if ( getParent(x) == getParent(y) )
fprintf( fout, "DA\n" );
else
fprintf( fout, "NU\n" );
}
fclose( fin );
fclose( fout );
return 0;
}