Cod sursa(job #1340449)

Utilizator Edsger.DijkstraEdsger Wybe Dijkstra Edsger.Dijkstra Data 11 februarie 2015 20:18:55
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int MAXN = 100010;

int T[MAXN];

int Find (const int &node)
{
    if (T[node] == node)
        return node;

    return (T[node] = Find (T[node]));
}

int main()
{
    int N, M, i, op, a, b;
    int Tx, Ty;

    in >> N >> M;

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

    for (i = 1; i <= M; i ++){
        in >> op >> a >> b;
        Tx = Find (a);
        Ty = Find (b);

        if (op == 1)
            T[Tx] = Ty;
        else
            if (Tx == Ty)
                out << "DA\n";
            else
                out << "NU\n";
    }

    return 0;
}