Cod sursa(job #2945609)

Utilizator biancar28Radulescu Alexia-Bianca biancar28 Data 23 noiembrie 2022 22:29:08
Problema Paduri de multimi disjuncte Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

vector<int>rad;

int radacina(int x){

    while(x!=rad[x]){
        rad[x]=rad[rad[x]];
        x=rad[x];
    }
    return x;

}

void reuniune(int x, int y){
    int a,b;
    a=radacina(x);
    b=radacina(y);
    rad[a]=rad[b];
}



int main() {
    int n,m,op,x,y;
    f>>n>>m;

    rad.resize(n+1);
    for(int i=1;i<=n;i++){
        rad[i]=i;
    }

    while(f){
        f>>op>>x>>y;
        if(op==1){
            reuniune(x,y);
        }
        else{
            if(radacina(x)==radacina(y))
                g<<"DA"<<"\n";

            else
                g<<"NU"<<"\n";
        }
    }

    return 0;
}