Cod sursa(job #2945495)

Utilizator deboradeleanuDebora Deleanu deboradeleanu Data 23 noiembrie 2022 20:33:50
Problema Paduri de multimi disjuncte Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include<bits/stdc++.h>
using namespace std;

ifstream fin("disjoint.in");
ofstream fout("disjoint.out");

vector<int> mult;
int x, y, n, m, cod;

//afla nr de ordine al multimii din care face parte n acum
int unu(int n){
    if(mult[n] != n){
        mult[n]=mult[mult[n]];
        n = mult[n];
    }
    return n;
}

void unuu(int& x, int& y){
    int a = unu(x);
    int b = unu(y);

    mult[a] = b;
}

void doi(int& x, int& y){
    if (unu(x) == unu(y))
        fout<<"DA"<<endl;
    else
        fout<<"NU"<<endl;
}

int main(){
    fin>>n>>m;
    mult.resize(n+1);
    for(int i=1; i<=n; i++)
        //vectorul retine multimea din care face parte iteratorul
        mult[i] = i;

    for(int i=1; i<=m; i++){
        fin>>cod>>x>>y;
        if(cod == 1)
            unuu(x,y);
            //mult[unu(x)] = unu(y);
        else
            doi(x,y);
    }

}