Cod sursa(job #2947295)

Utilizator andreihodoAndrei Hodoroaga andreihodo Data 25 noiembrie 2022 21:43:22
Problema Paduri de multimi disjuncte Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <vector>

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

int n, m, x, y, cod, fx, fy;
vector<int> par;

// gaseste tatal unui nod
int find(int x) {
    if(x != par[x]) {
        par[x] = find(par[x]);
        return par[x];
    }
    return x;
}

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

    // initalizam tatal unui nod sa fie el insusi
    par.resize(n + 1);
    for(int i = 0; i < n; i++)
        par[i] = i;

    for(int i = 1; i <= m; i++) {
        f >> cod >> x >> y;
        fx = find(x);
        fy = find(y);
        if(cod == 1) {
            par[fy] = fx;
        } else {
            if(fx == fy)
                g << "DA" << endl;
            else 
                g << "NU" << endl;
        }
    }

}