Cod sursa(job #2202097)

Utilizator lucia.cstCostache Lucia lucia.cst Data 7 mai 2018 15:40:09
Problema Paduri de multimi disjuncte Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<fstream>

using namespace std;

ifstream cin("disjoint.in");
ofstream cout("disjoint.out");

int n, m, t[100001], nrn[100001];

//void

int radacina(int x){
    if(t[x]==0)
        return x;
    t[x]=radacina(t[x]);
    return t[x];
}

bool findd(int x, int y){
    return (radacina(x)==radacina(y));
}

void unionn(int x, int y){
    int rx=radacina(x);
    int ry=radacina(y);
    for(int i=1; i<=n; i++)
        nrn[i]=1;
    if(nrn[x]<nrn[y]){
        t[rx]=ry;
        nrn[ry]+=nrn[x];
    }
    else{
        t[ry]=rx;
        nrn[rx]+=nrn[ry];
    }
}

void citire(){
    cin>>n>>m;
    int x, y, z;
    for(int i=1; i<=m; i++){
        cin>>x>>y>>z;
        if(x==1)
            unionn(y, z);
        else{
            bool lucia=findd(y, z);
            if(lucia)
                cout<<"DA"<<endl;
            else
                cout<<"NU"<<endl;}
    }
}

int main(){
    citire();
    return 0;
}