Cod sursa(job #1891667)

Utilizator catu_bogdan_99Catu Bogdan catu_bogdan_99 Data 24 februarie 2017 11:15:14
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <cstdio>
using namespace std;

#define NMAX 100001
int P[ NMAX ];

int Root ( int x ) {
    while ( P[ x ] != P[ P[ x ] ] )
        P[ x ] = P[ P[ x ] ];
    return P[ x ];
}

int main () {


    freopen( "disjoint.in", "r", stdin );
    freopen( "disjoint.out", "w", stdout );
    int n, m, i, j, x, y, k,rx, ry;

    scanf( "%d%d",&n,&m );
    for ( i = 1; i <= n; ++i ) P[ i ] = i;

    while ( m-- ) {
        scanf( "%d%d%d",&k,&x,&y );
        rx = Root( x );
        ry = Root( y );
        if ( k == 1 ) P[ rx ] = ry;
        else {
                if ( rx == ry )printf( "DA\n" );
                else printf( "NU\n" );
        }
    }


    return 0;
}