Cod sursa(job #2457043)

Utilizator TherevengerkingSurani Adrian Therevengerking Data 16 septembrie 2019 14:23:25
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <bits/stdc++.h>

using namespace std;
const int Nmax = 100000 + 5;
int par[Nmax], n, m;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");

int get_parent(int node)
{
    if(par[node] == -1)return node;

    return get_parent(par[node]);
}

int main()
{
    fin >> n >> m;
    for(int i = 1; i <= n; ++i)par[i] = -1;

    for(int i = 1, tp, x, y; i <= m; ++i)
    {
        fin >> tp >> x >> y;

        if(tp == 1)
        {
            int p1 = get_parent(x);
            int p2 = get_parent(y);
            if(p1 != p2)
                par[p2] = p1;
        }
        else
        {
            fout << ((get_parent(x) == get_parent(y)) ? "DA" : "NU") << '\n';
        }
    }
    return 0;
}