Mai intai trebuie sa te autentifici.

Cod sursa(job #2773663)

Utilizator 23liviuStanescu Liviu 23liviu Data 8 septembrie 2021 11:41:17
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <algorithm>
#include <fstream>
#include <vector>
using namespace std;

const int MAXN = 100005;
int parent[MAXN];

int GetRoot(int pos)
{
    if(pos == parent[pos])
        return pos;
    parent[pos] = GetRoot(parent[pos]);
    return parent[pos];
}

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

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