Cod sursa(job #2947300)

Utilizator andreihodoAndrei Hodoroaga andreihodo Data 25 noiembrie 2022 21:45:58
Problema Paduri de multimi disjuncte Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 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]) {
        return par[x] = find(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;
        if(cod == 1) {
            par[find(y)] = find(x);
        } else {
            if(find(x) == find(y))
                g << "DA" << endl;
            else 
                g << "NU" << endl;
        }
    }

}