Cod sursa(job #2700993)

Utilizator N3ctar1eNectarie Tulea N3ctar1e Data 29 ianuarie 2021 15:35:11
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#define NMAX 100000
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int sef[NMAX+1];
int sefsuprem(int x){
    if(sef[x] == x)
        return x;
    else
        return sef[x] = sefsuprem(sef[x]);
}
void unire(int x, int y){
    int sef_x,sef_y;
    sef_x=sefsuprem(x);
    sef_y=sefsuprem(y);
    sef[sef_x]=sef_y;
}
int main(){
    int n,m,cerinta,x,y;
    fin>>n>>m;
    for(int i=1;i<=n;i++)
        sef[i]=i;
    for(int i=1;i<=m;i++){
        fin>>cerinta>>x>>y;
        if(cerinta==1)
            unire(x,y);
        else{
            if(sefsuprem(x)==sefsuprem(y))
                fout<<"DA"<<'\n';
            else
                fout<<"NU"<<'\n';
        }
    }
    return 0;
}