Cod sursa(job #638650)

Utilizator valentin.harsanValentin Harsan valentin.harsan Data 21 noiembrie 2011 11:49:23
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<fstream>
using namespace std;

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

int n,m,op,x,y,tata[100001],rx,ry;

int radacina(int x) {

    if(tata[x]==0)
        return x;

    int rez=radacina(tata[x]);
    tata[x]=rez;
    return rez;
}

int main() {
    int i;

    in >> n >> m;

    for(i=1;i<=m;++i) {
        in >> op >> x >> y;

        rx=radacina(x);
        ry=radacina(y);

        if(op==1) {

            if(rx!=ry)
                tata[rx]=ry;
        }
        else {
            if(rx==ry)
                out << "DA\n";
            else
                out << "NU\n";
        }

    }

    return 0;
}