Cod sursa(job #2944033)

Utilizator iioaaana777Ghergu Ioana iioaaana777 Data 21 noiembrie 2022 22:51:24
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#include <iostream>
#include <vector>
#define NMAX 100005
using namespace std;

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

int N, M, cod, x, y;
vector<int> tata(NMAX);

int parinte(int nod)
{
    if(tata[nod] == nod)
        return nod;
    else
        return parinte(tata[nod]);

}

void reuniune(int x, int y)
{
    tata[parinte(y)] = parinte(x);
}

bool verif(int x, int y)
{
    return parinte(x) == parinte(y);
}

int main()
{
    fin>>N>>M;

    for(int i = 1; i <= N; ++i)
        tata[i] = i;


    for(int i = 0; i < M; ++i)
    {
        fin>>cod>>x>>y;

        if(cod == 1)
            reuniune(x, y);
        else
            if(verif(x, y))
                fout<<"DA\n";
            else
                fout<<"NU\n";
    }

    return 0;
}