Cod sursa(job #3154089)

Utilizator Oprea_IrinaIrina Oprea Oprea_Irina Data 3 octombrie 2023 10:19:26
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <fstream>
#include <unordered_map>

using namespace std;

unordered_map <int, int> mapa;

int findsef (int a);

int main()
{
    ifstream cin ("disjoint.in");
    ofstream cout ("disjoint.out");

    int n, m, op, a, b;
    cin >> n >> m;
    for (int i=1; i<=n; i++)
    {
        mapa[i] = i;
    }
    for (int i=0; i<m; i++)
    {
        cin >> op;
        if (op == 1)
        {
            cin >> a >> b;
            mapa[b] = mapa[a];
        }
        else if (op == 2)
        {
            cin >> a >> b;
            if (findsef(a) ==  findsef(b))
            {
                cout << "DA" << endl;
            }
            else cout << "NU" << endl;
        }
    }
    return 0;
}


int findsef (int a)
{
    while (mapa[a] != a)
    {
        a = mapa[a];
    }
    return a;
}