Cod sursa(job #1231913)

Utilizator vtt271Vasile Toncu vtt271 Data 21 septembrie 2014 18:36:13
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>

using namespace std;

int T[100005];

int get_root(int x)
{
    while( T[x] ) x = T[x];
    return x;
}

int main()
{
    ifstream inFile("disjoint.in");
    ofstream outFile("disjoint.out");

    int N, M;
    inFile >> N >> M;

    int cod, x, y;
    while(M--){
        inFile >> cod >> x >> y;
        int rx = get_root(x);
        int ry = get_root(y);

        while( T[ T[x] ] ){
            int aux = T[x];
            T[x] = rx;
            x = aux;
        }

        while( T[ T[y] ] ){
            int aux = T[y];
            T[y] = ry;
            y = aux;
        }

        if( cod == 1 ){
            T[rx] = ry;
        }else{
            if(rx == ry) outFile << "DA\n";
            else outFile << "NU\n";
        }

    }
}