Cod sursa(job #2978856)

Utilizator Elvis_CostinTuca Elvis-Costin Elvis_Costin Data 14 februarie 2023 16:09:48
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <bits/stdc++.h>
using namespace std;
string np = "disjoint";
ifstream f(np + ".in");
ofstream g(np + ".out");

// #define f cin
// #define g cout

int n, m, t[100003];

int find_set(int nod)
{
    if (nod == t[nod])
        return nod;
    return t[nod] = find_set(t[nod]);
}
void union_sets(int a, int b)
{
    a = find_set(a), b = find_set(b);
    if (a != b)
        if (a < b)
            swap(a, b), t[b] = a;
}
int main()
{
    f >> n >> m;
    for (int i = 1; i <= n; i++)
        t[i] = i;
    for (int cer, a, b; f >> cer >> a >> b;)
        if (cer == 1)
            union_sets(a, b);
        else
        {
            if (find_set(a) == find_set(b))
                g << "DA\n";
            else
                g << "NU\n";
        }

    return 0;
}