Cod sursa(job #3251298)

Utilizator iulian.dumitrescuIulian Dumitrescu iulian.dumitrescu Data 25 octombrie 2024 16:53:59
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-32 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>

using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int sef[100001],sef1,sef2;
int sef_suprem(int x){
    if (sef[x]==x)
        return x;
    else
        return sef[x]=sef_suprem(sef[x]);
}

void unire(int x, int y){
    sef1=sef_suprem(x);
    sef2=sef_suprem(y);
    sef[sef1]=sef2;
}

int main()
{
    int n,m,cerinta,x,y;
    fin>>n>>m;
    for (int i=1; i<=m; i++){
        fin>>cerinta>>x>>y;
        if (cerinta==1)
            unire(x,y);
        else{
            if (sef_suprem(x)==sef_suprem(y))
                fout<<"DA"<<'\n';
            else
                fout<<"NU"<<'\n';
        }
    }
    fin.close(); fout.close();
    return 0;
}