Cod sursa(job #1649847)

Utilizator robx12lnLinca Robert robx12ln Data 11 martie 2016 15:22:18
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int t[100005],n,m,x,y,op,a,b;
int rad( int nod ){
    if( t[nod] > 0 ){
        nod = rad( t[nod] );
    }
    return nod;
}
int main(){
    fin >> n >> m;
    for( int i = 1; i <= n; i++ ){
        t[i] = -1;
    }
    for( int k = 1; k <= m; k++ ){
        fin >> op >> x >> y;
        if( op == 1 ){
            a = rad(x);
            b = rad(y);
            if( t[a] <= t[b] ){
                t[a] -= t[b];
                t[b] = a;
            }else{
                t[b] -= t[a];
                t[a] = b;
            }
        }else{
            a = rad(x);
            b = rad(y);
            if( a == b ){
                fout << "DA\n";
            }else{
                fout << "NU\n";
            }
        }
    }
    return 0;
}