Cod sursa(job #2947920)

Utilizator pinmelissa05Pintenaru-Dumitrescu Nicole Melissa pinmelissa05 Data 26 noiembrie 2022 21:50:05
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

vector <int>tata;
vector <int>h;//inaltime
//simulam un arbore de tati
int Tata(int x)
{   //radacina
    if(tata[x] == 0)
        return x;
     //repetam pana la radacina
    return tata[x] = Tata(tata[x]);
}

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

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

        if(op== 1)
        {
                //cautam radacinile nodurilor
            int rad_x = Tata(x);
            int rad_y = Tata(y);

            tata[rad_x] = rad_y;
        }
        else
        {   //verificam daca au ac radacina
            if(Tata(x) == Tata(y))
                g<<"DA\n";
            else
                g<<"NU\n";
        }
    }

    return 0;
}