Cod sursa(job #2944072)

Utilizator federicisFedericis Alexandru federicis Data 21 noiembrie 2022 23:42:12
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>

using namespace std;

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

int n, m, colors[100001], mult1, mult2, cnt = 1;

int check(int nod){
    if(colors[nod] == nod){
        return nod;
    }
    colors[nod] = check(colors[nod]);
    return colors[nod];
}

int main() {
    in >> n >> m;
    for(int i = 1; i <= n; i++){
        colors[i] = i;
    }
    int nr, a, b;
    while(m--){
        in >> nr >> a >> b;
        if(nr == 1){
            if(a < b)
                colors[check(b)] = colors[check(a)];
            else
                colors[check(a)] = colors[check(b)];
        }
        else
        {
            mult1 = check(a);
            mult2 = check(b);
            out << (mult1 == mult2 ? "DA" : "NU") << '\n';
        }
    }
    return 0;
}