Cod sursa(job #1891690)

Utilizator vlasiuflaviusVlasiu Flavius vlasiuflavius Data 24 februarie 2017 11:28:50
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
///FLAVIUS, UBESTE-MA
#include <fstream>
#include <vector>
#include <queue>

using namespace std;


ifstream fin( "disjoint.in" );
ofstream fout("disjoint.out");
int DSU[ 100010 ],i,j,n,m,x,y;

int Union( int x )
{
    if( x == DSU[ x ] )
    return x;
    int a = Union( DSU[ x ] );
    DSU[ x ] = a;
    return a;
}

int main()
{
    fin>>n>>m;
    for( i = 1 ; i <= n ; i++ )
    {
        DSU[ i ] = i;
    }
    for( i = 1 ; i <= m ; i++ )
    {
        fin>>x;
        if( x == 1 )
        {
            fin>>x>>y;
            x = Union( x );
            y = Union( y );
            DSU[ x ] = y;
        }
        else
        {
            fin>>x>>y;
            if( Union( x ) == Union( y ) )
                fout<<"DA\n";
            else
                fout<<"NU\n";
        }
    }

    return 0;
}