Cod sursa(job #3363675)

Utilizator JenJenCristache Ion JenJen Data 20 august 2026 21:01:35
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <bits/stdc++.h>
using namespace std;

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

int n, m;
int dad[100005];

void precalc()
{
    for (int i = 1; i <= n; i++)
    {
        dad[ i ] = i;
    }
}

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

    return dad[ x ] = tata( dad[ x ] );
}

void unite(int a, int b)
{
    int tata_a = tata( a );
    int tata_b = tata( b );

    if (tata_a != tata_b)
    {
        dad[ tata_a ] = tata_b;
    }
}

int main()
{
    in >> n >> m;

    precalc();

    for (int i = 1; i <= m; i++)
    {
        int op, x, y;
        in >> op >> x >> y;
        if (op == 1)
        {
            unite( x , y );
        } else
        {
            if (tata( x ) == tata( y ))
            {
                out << "DA\n";
            } else
            {
                out << "NU\n";
            }
        }
    }
    return 0;
}