Cod sursa(job #3317610)

Utilizator MMEnisEnis Mutlu MMEnis Data 24 octombrie 2025 17:31:13
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int sef[100001];

int boss ( int x )
{
    if ( sef [x] == x )
        return x;
    else return sef[x] = boss ( sef[x] );
}

void unire ( int x, int y )
{
    sef[boss(y)] = boss(x);
}

int main()
{
    int n, m;
    f >> n >> m;
    for ( int i = 1; i <= n; i ++ )
        sef[i] = i;
    for ( int i = 1; i <= m; i ++ )
    {
        int c, x, y;
        f >> c >> x >> y;
        if ( c == 1 )
            unire ( x, y );
        else
        {
            if ( boss(x) == boss (y) )
                g << "DA" << '\n';
            else g << "NU" << '\n';
        }
    }
    return 0;
}