Cod sursa(job #2576717)

Utilizator MoodyFaresFares Mohamad MoodyFares Data 6 martie 2020 21:59:47
Problema Componente biconexe Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <cstdio>
#define NMAX 100000
using namespace std;
int sef[NMAX+1];
int card;
int find ( int nr ) {
    if (nr == sef[nr])
      return nr;
    return sef[nr] = find(sef[nr]);
}
int uneste ( int x, int y ) {
    int sefx, sefy, cardx, cardy;
    sefx = find ( x );
    cardx = card;
    sefy = find ( y );
    cardy = card;
    if ( cardx < cardy )
        sef[sefx] = sefy;
    else
        sef[sefy] = sefx;
}
int main() {
    freopen ( "disjoint.in", "r", stdin );
    freopen ( "disjoint.out", "w", stdout );
    int n, m, x, y, cod, i;
    scanf ( "%d%d",&n, &m );
    for ( i = 1 ; i <= n ; i ++ )
        sef[i] = i;
    for ( i = 1 ; i <= m ; i ++ ) {
        scanf ( "%d%d%d",&cod, &x, &y );
        if ( cod == 1 )
            uneste ( x, y );
        else {
            if ( find ( x ) == find ( y ) )
                printf ( "DA\n" );
            else
                printf ( "NU\n" );
        }
    }
    return 0;
}