Cod sursa(job #3313827)

Utilizator Alexbora13Bora Ioan Alexandru Alexbora13 Data 7 octombrie 2025 08:11:21
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMAX = 1e5;

int n, q;
int op, x, y;
int t[NMAX+1];
int rang[NMAX+1];

int Radacina(int nod)
{
    if(t[nod] == 0)
        return nod;
    return t[nod] = Radacina(t[nod]);
}

void Unire(int x, int y)
{
    if(rang[y] < rang[x])
        t[y] = x;
    else
        t[x] = y, rang[x]+=(rang[x]==rang[y]);

}

int main()
{
    fin >> n >> q;
    while(q--)
    {
        fin >> op >> x >> y;
        int r1 = Radacina(x), r2 = Radacina(y);
        if(op == 1)
            Unire(r1, r2);
        else
            fout <<  (r1 == r2 ? "DA\n" : "NU\n");
    }
    return 0;
}