Cod sursa(job #1655881)

Utilizator isav_costinVlad Costin Andrei isav_costin Data 18 martie 2016 14:32:01
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <cstdio>
int t[100001];
using namespace std;
int radacina( int k )
{
    if( t[k]==k )
        return k;
    t[k]=radacina(t[k]);
    return t[k];
}
inline void reuniune( int x, int y )
{
    int rx, ry;
    rx=radacina(x);
    ry=radacina(y);
    t[rx]=ry;
}
inline int verif( int x, int y )
{
    return radacina(x)==radacina(y);
}
int main()
{
    freopen( "disjoint.in", "r", stdin );
    freopen( "disjoint.out", "w", stdout );
    int n, m, i, p, a, b;
    scanf( "%d%d", &n, &m );
    for( i=1;i<=n;i++ )
        t[i]=i;
    for( i=1; i<=m; i++ )
    {
        scanf( "%d%d%d", &p, &a, &b );
        if( p==1 )
            reuniune(a,b);
        else if( verif(a,b) )
            printf( "DA\n" );
        else
            printf( "NU\n" );
    }
    return 0;
}