Cod sursa(job #3167845)

Utilizator radu1331Mocan Radu radu1331 Data 11 noiembrie 2023 10:18:46
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")

const int NMAX = 1e6 + 5;
int parent [ NMAX ];

int find ( int x )
{
    if ( x == parent [ x ] ) return x;
    parent [ x ] = find ( parent [ x ] );
    return parent [ x ];
}

int main ( int argc, char *argv[] )
{
    ( void )! freopen ( "disjoint.in" , "r", stdin );
    ( void )! freopen ( "disjoint.out" , "w", stdout );
    std::ios_base::sync_with_stdio ( false );
    std::cin.tie ( NULL );
    
    int n, m; std::cin >> n >> m;
    for ( int i = 1; i <= n; ++ i )
        parent [ i ] = i;
    
    int cod, x, y;
    while ( m -- )
    {
        std::cin >> cod >> x >> y ;
        find ( x ), find ( y );
        if ( cod == 1 )
            parent [ parent [ x ] ] = parent [ y ];
        else
            if ( parent [ x ] == parent [ y ] ) std::cout << "DA" << '\n';
            else std::cout << "NU" << '\n';
    }
    return 0;
}