Cod sursa(job #742698)

Utilizator psycho21rAbabab psycho21r Data 1 mai 2012 02:49:40
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>

#include <fstream>

using namespace std;

int elements[100001];

int find_set_index(int node)
{
    if(elements[node] != node)
        elements[node] = find_set_index(elements[node]);
    return elements[node];
}

int main()
{
    ifstream in("disjoint.in");

    int N, M;
    in >> N >> M;

    for(int i = 0; i < N; ++i)
        elements[i] = i;

    ofstream out("disjoint.out");
    for(int i = 0, operation_type, X, Y; i < M; ++i)
    {
        in >> operation_type >> X >> Y;
        X = find_set_index(X - 1);
        Y = find_set_index(Y - 1);
        if(operation_type == 1)
            elements[X] = Y;
        else
            X == Y ? out << "DA\n" : out << "NU\n";
    }

    in.close();
    out.close();

    return 0;
}