Cod sursa(job #2751965)

Utilizator matei.balaur2009Matei Balaur12 matei.balaur2009 Data 16 mai 2021 09:19:16
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <iostream>
#include <fstream>

using namespace std;
int m[100000];
int n;
int findx(int i) {
    if(m[i]==i) return i;
    return m[i]=findx(m[i]);
}

void unionx(int i, int j) {
    int mi,mj;
    mi=findx(i);
    mj=findx(j);
    m[mj]=mi;
}
int main() {
    ifstream in("disjoint.in");
    ofstream out("disjoint.out");
    int p,i,a,x,y;
    in>>n>>p;
    for(i=1; i<=n; i++) {
        m[i]=i;
    }
    for(i=0; i<p; i++) {
        in>>a>>x>>y;
        if(a==1) {
            unionx(x, y);
        } else {
            if(findx(x)==findx(y)) {
                out<<"DA"<<'\n';
            } else
                out<<"NU"<<'\n';
        }
    }
    return 0;
}