Cod sursa(job #1231874)

Utilizator vtt271Vasile Toncu vtt271 Data 21 septembrie 2014 17:50:45
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 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);

        if( cod == 1 ){
            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";
        }

    }
}