Cod sursa(job #1375224)

Utilizator Toast97Calin Farcas Toast97 Data 5 martie 2015 12:40:19
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>

using namespace std;

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

int gr[100005];

int n, m;

int grupa (int nod)
{
    if (gr[nod] == nod)
        return nod;

    gr[nod] = grupa(gr[nod]);
    return gr[nod];
}

void combina (int x, int y)
{
    gr[grupa(x)] = grupa(y);
}

void citire ()
{
    f >> n >> m;

    for (int i = 1; i <= n; i ++)
        gr[i] = i;
}

int main()
{
    citire ();

    int a, b, o;

    for (int i = 1; i <= m; i ++)
    {
        f >> o >> a >> b;

        if (o == 1)
            combina (a, b);

        else
            if (grupa(a) == grupa(b))
                g << "DA\n";
        else
            g << "NU\n";
    }

    f.close ();
    g.close ();
    return 0;
}