Cod sursa(job #1896023)

Utilizator andreinmAndrei andreinm Data 28 februarie 2017 13:22:39
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <fstream>

using namespace std;

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

const int NM = 100010;

int T[NM];
int N, O, i, x, y, type;

int Find(int S) {
    if (T[S] != S)
        T[S] = Find(T[S]);

    return T[S];
}

void Join(int D1, int D2) {
    T[D1] = D2;
}

void Check(int x, int y) {
    out << ((Find(x) == Find(y)) ? "DA\n" : "NU\n");
}

int main()
{
    in >> N >> O;

    for (i = 1; i <= N; ++i) {
        T[i] = i;
    }

    for (i = 1; i <= O; ++i) {
        in >> type >> x >> y;

        (type == 1) ? Join(x, y) : Check(x, y);
    }

    return 0;
}