Cod sursa(job #894492)

Utilizator lucian666Vasilut Lucian lucian666 Data 26 februarie 2013 21:35:51
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb



#include<fstream>
#define NN 100009

using namespace std;
ofstream out("disjoint.out");


int n , m , T[NN];

int find( int x );
void unire( int x , int y );
void read();

int main()
{
    read();

    return 0;
}

int find ( int x )
{
    if ( x != T[x] )
        return T[x] = find( T[x] );
    return x;
}

void unire( int x , int y )
{
    int m1 , m2;

    m1 = find(x);
    m2 = find(y);

    T[ m2 ] = m1;
}

void read()
{
    ifstream in("disjoint.in");

    in >> n >> m;
    for( int i=1 ; i<=n ; i++)
        T[i] = i;

    for( int op , x , y ; m ; --m )
    {
        in >> op >> x >> y;
        if ( op&1 )
            unire( x , y );
        else
            out << ( find(x) == find(y) ? "DA" : "NU " ) << '\n';
    }
}