Cod sursa(job #2304048)

Utilizator mirceaisherebina mircea mirceaishere Data 17 decembrie 2018 14:10:53
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");

int n, m, i, j, x, y, op, t[100010], rx, ry;

int radacina(int nod){
    while(t[nod]>0){
        nod=t[nod];
    }
    return nod;
}

int main(){
    fin>>n>>m;
    for(i=1; i<=n; i++){
        t[i]=-1;
    }
    for(i=1; i<=m; i++){
        fin>>op>>x>>y;
        if(op==1){
            rx=radacina(x);
            ry=radacina(y);
            if(rx!=ry){
                if(t[rx]<t[ry]){
                    t[rx]+=t[ry];
                    t[ry]=rx;
                }
                else{
                    t[ry]+=t[rx];
                    t[rx]=ry;
                }
            }
        }else{
            if(radacina(x)==radacina(y)){
                fout<<"DA"<<"\n";
            }else{
                fout<<"NU"<<"\n";
            }
        }
    }
}