Cod sursa(job #2693767)

Utilizator MevasAlexandru Vasilescu Mevas Data 6 ianuarie 2021 22:25:07
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include<fstream>

#define Nmax 100010

using namespace std;

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

int n, m;
int reps[Nmax];

int findRep(int x) {
    while (reps[x] != 0) {
        x = reps[x];
    }
    return x;
}

void unite(int x, int y) {
    int smaller = findRep(x);
    int larger = findRep(y);
    reps[larger] = smaller;
}

int main() {
    fin >> n >> m;

    for(int i = 0; i < m; i++) {
        int op, x, y;
        fin >> op >> x >> y;
        switch(op) {
            case 1:
                unite(x, y);
                break;
            case 2:
                if(findRep(x) == findRep(y)) {
                    fout << "DA\n";
                } else {
                    fout << "NU\n";
                }
                break;
        }
    }
}