Cod sursa(job #2935345)

Utilizator andlftLefter Andrei andlft Data 6 noiembrie 2022 16:12:04
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <fstream>
#include <vector>


using namespace std;

vector <int> tati;

int findRoot (const int &a)
{
    if(tati[a] == a)
    {
        return a;
    }
    else
    {
        return findRoot(tati[a]);
    }
}

void unify(const int &a, const int &b)
{
    tati[findRoot(a)] = findRoot(b);
}



int main()
{

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

    int n, m, op, a, b;
    fin >> n >> m;
    tati.resize(n+1);

    for (int i = 1; i <= n; i++)
    {
        tati[i] = i;
    }

    for(int i = 0; i < m; i++)
    {
        fin >> op >> a >> b;

        if(op == 1)
        {
            unify(a,b);
        }
        else
        {
            if (findRoot(a) == findRoot(b))
            {
                fout<<"DA\n";
            }
            else
            {
                fout<<"NU\n";
            }
        }
    }



    return 0;
}