Cod sursa(job #947113)

Utilizator matei_cChristescu Matei matei_c Data 6 mai 2013 18:51:59
Problema Paduri de multimi disjuncte Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<fstream>
using namespace std ;

#define maxn 10001

ifstream fin("disjoint.in");
ofstream fout("disjoint.out");

int n, m ;

int tata[maxn] ;

int gaseste(int nod)
{
    if( nod != tata[nod] )
        tata[nod] = gaseste( tata[nod] ) ;

    return tata[nod] ;
}

void uneste(int x, int y)
{
    tata[x] = y ;
}

void init()
{
    for(int i = 1; i <= n; ++i )
        tata[i] = i;
}

int main()
{
    fin >> n >> m ;

    init() ;

    for(int i = 1; i <= m; ++i )
    {
        int x, y, tip ;

        fin >> tip >> x >> y ;

        if( tip == 1 )
            uneste( gaseste(x), gaseste(y) ) ;
        else
        {
            if( gaseste(x) == gaseste(y) )
                fout << "DA\n" ;
            else
                fout << "NU\n" ;
        }
    }

    return 0 ;
}