Cod sursa(job #2170063)

Utilizator remus88Neatu Remus Mihai remus88 Data 14 martie 2018 22:14:17
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>
#define Nmax 100009

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

int n,m,x,y,p,root[Nmax];

int getroot(int x) {

    while(x!=root[x]) {

        x=root[x];
    }

    return x;
}

void Solve1(int x, int y) {

    root[getroot(y)]=x;
}

void Solve2(int x, int y) {

    if (getroot(x) == getroot(y)) g<<"DA\n";
    else g<<"NU\n";
}

void ReadInput() {

    f>>n>>m;
    for (int i=1; i<=n; ++i) root[i]=i;

    for (int i=1; i<=m; ++i) {

        f>>p>>x>>y;

        if (p==1) {
            Solve1(x,y);
        }

        else {
            Solve2(x,y);
        }
    }
}

int main() {

    ReadInput();

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