Cod sursa(job #2945025)

Utilizator Andrews69Harnagea Andrei-Alexandru Andrews69 Data 23 noiembrie 2022 12:49:40
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

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

vector <int> arb;


int radacina(int x) {
    if(arb[x]==0)
        return x;
    return arb[x]= radacina(arb[x]);
}


void reuniune(int x, int y) {
    int rad_x = radacina(x);
    int rad_y = radacina(y);

    if(x>y)
        arb[rad_x] = rad_y;
    else
        arb[rad_y] = rad_x;
}

int main() {
    int n,m,x,y,op;
    f>>n>>m;
    arb.resize(n+1,0);

    for(int i=0;i<m;i++){
        f>>op>>x>>y;

        if(op==1)
            reuniune(x,y);
        else
        if(radacina(x)==radacina(y))
                g<<"DA"<<"\n";
            else
                g<<"NU"<<"\n";

    }


    f.close();
    g.close();



    return 0;
}