Cod sursa(job #2935340)

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


using namespace std;

vector <int> tati;

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

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

bool verify(int a, int b)
{
    return 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 (verify(a,b))
            {
                fout<<"DA\n";
            }
            else
            {
                fout<<"NU\n";
            }
        }
    }



    return 0;
}