Cod sursa(job #3311953)

Utilizator mihai234Mihai Sercaianu mihai234 Data 25 septembrie 2025 08:57:02
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;
int daddy[100005];
int get_big_daddy( int a ) {
    if ( a == daddy[a] )
        return a;
    return daddy[a] = get_big_daddy( daddy[a] );
}
void join( int a, int b ) {
    a = get_big_daddy( a );
    b = get_big_daddy( b );
    if ( a != b )
        daddy[b] = daddy[a];
}
int main()
{
    ifstream fin( "disjoint.in" );
    ofstream fout( "disjoint.out" );
    int i, a, b, n, m, t;
    fin >> n >> m;
    for ( i = 1; i <= n; i++ ) 
        daddy[i] = i;
    for ( i = 0; i < m; i++ ) {
        fin >> t >> a >> b;
        if ( t == 1 )
            join( a, b );
        else 
            fout << ( get_big_daddy( a ) == get_big_daddy( b ) ? "DA\n" : "NU\n" );
    }
    return 0;
}