Cod sursa(job #2946572)

Utilizator MoarcascosminMoarcas Cosmin Moarcascosmin Data 24 noiembrie 2022 23:38:40
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

int radacina(int nod, vector<int>& tata)
{
    if(tata[nod] == 0)
        return nod;

    tata[nod] = radacina(tata[nod], tata);
    return tata[nod];
}

void reuniune(int x, int y, vector<int>& tata)
{   
    int radacinaX = radacina(x, tata);
    int radacinaY = radacina(y, tata);
    tata[radacinaY] = radacinaX;
}

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

    int n, m;
    int operatie, x, y;

    f >> n >> m;

    vector<int> tata(n + 1, 0);

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

        if(operatie == 1)
        {
            reuniune(x, y, tata);
        }
        else
        {
            if(radacina(x, tata) == radacina(y, tata))
                g << "DA\n";
            else
                g << "NU\n";
        }
    }

    return 0;
}