Cod sursa(job #2372984)

Utilizator AngelEclipseGarleanu Alexandru Stefan AngelEclipse Data 7 martie 2019 11:41:54
Problema Paduri de multimi disjuncte Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("disjoint.in");
ofstream g("disjoint.out");


int parent[10005];


int setParent(int node)
{
    if (parent[node] == node)
    {
        return node;
    }
    else
    { /*Compression*/
        parent[node] = setParent(parent[node]);
    }
    return parent[node];
}

int main()
{
    int n, m;
    f >> n >> m;
    for (int i = 1; i <= n; i++)
    {
        parent[i] = i;
    }
    for (int i = m, n1, n2, op; i > 0; i--)
    {
        f >> op >> n1 >> n2;
        if (op == 1)
        {
            parent[setParent(n2)] = setParent(n1);
        }
        else
        {
            if (setParent(n1) == setParent(n2))
            {
                g << "DA\n";
            }
            else
            {
                g << "NU\n";
            }
        }
    }
}