Cod sursa(job #2815849)

Utilizator Theo_FurtunaTheodor-Florentin Furtuna Theo_Furtuna Data 10 decembrie 2021 15:07:34
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include<fstream>
#include<vector>
using namespace std;
ifstream in("date.in");
ofstream out("date.out");
    int get_root(int x, vector<int> &multime)
    {
        while (multime[x] != x)
            x = multime[x];
        return x;
    }
    void Dis()
    {
        int nr_multimi, nr_operatii;
        vector<int> multime;
        in >> nr_multimi >> nr_operatii;
        multime.resize(nr_operatii + 1);
        for (int i = 1; i <= nr_multimi; i++)
            multime[i] = i;
        for (int i = 1; i <= nr_operatii; i++)
        {
            int cod, x, y, a, b;
            in >> cod >> x >> y;
            a = get_root(x, multime);
            b = get_root(y, multime);
            if (cod == 1)
            {
                if (a < b)
                    multime[b] = a;
                else
                    multime[a] = b;
            }
            else
            {
                if (a == b)
                    out << "DA\n";
                else
                    out << "NU\n";
            }
        }
    }
int main()
{
	Dis();
	return 0;
}