Cod sursa(job #2786742)

Utilizator GligarEsterabadeyan Hadi Gligar Data 21 octombrie 2021 17:14:01
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>

using namespace std;

ifstream fin("disjoint.in");
ofstream fout("disjoint.out");

const int nmax=100000;

int r[nmax+1];

void update(int x){
    int i=x;
    while(r[i]!=r[r[i]]){
        i=r[i];
    }
    int j=x;
    while(r[j]!=r[r[j]]){
        int rj=r[j];
        r[j]=r[i];
        j=rj;
    }
}

int main(){
    int n,m;
    fin>>n>>m;
    for(int i=1;i<=n;i++){
        r[i]=i;
    }
    for(int i=1;i<=m;i++){
        int cod,x,y;
        fin>>cod>>x>>y;
        update(x);
        update(y);
        if(cod==1){
            r[r[x]]=r[y];
            r[x]=r[y];
        }else{
            if(r[x]==r[y]){
                fout<<"DA\n";
            }else{
                fout<<"NU\n";
            }
        }
    }
    return 0;
}