Cod sursa(job #1231880)

Utilizator vtt271Vasile Toncu vtt271 Data 21 septembrie 2014 18:02:16
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>

using namespace std;

int T[100005]; // H[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);

        int a = rx, b = ry, aux;
        while(T[a]){ aux = T[a]; T[a] = rx; a = aux; }
        while(T[b]){ aux = T[b]; T[b] = rx; b = aux; }

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

    }
}