Cod sursa(job #3321495)

Utilizator Roberto_CChirvasitu Roberto Roberto_C Data 9 noiembrie 2025 18:57:09
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("disjoint.in");
ofstream fout("disjoint.out");

int tata[100001],n,m;

int find_parent(int x)
{
    if(tata[x] == x)
        return x;
    else
        return tata[x] = find_parent(tata[x]);

}

void unite(int x, int y)
{
    int sef_x = find_parent(x);
    int sef_y = find_parent(y);
    if(sef_x != sef_y)
    tata[sef_x] = sef_y;
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    fin >> n >> m;
    for(int i = 1; i <= n; i++)
        tata[i] = i;
    while(m--)
    {
        int op,st,dr;
        fin >> op >> st >> dr;
        if(op == 1)
            unite(st,dr);
        else
        {
            int sef_a = find_parent(st);
            int sef_b = find_parent(dr);
            if(sef_a == sef_b)
                fout <<"DA";
            else
                fout << "NU";
            fout << '\n';
        }
    }
    return 0;
}