Cod sursa(job #2944064)

Utilizator federicisFedericis Alexandru federicis Data 21 noiembrie 2022 23:19:52
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp-64 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, colors[100001], mult1, mult2;

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){
            colors[max(a,b)] = colors[min(a, b)];
        }
        else
        {
            mult1 = check(a);
            mult2 = check(b);
            out << (mult1 == mult2 ? "DA" : "NU") << '\n';
        }
    }
    return 0;
}