Cod sursa(job #3267141)

Utilizator AsandeiStefanAsandei Stefan-Alexandru AsandeiStefan Data 11 ianuarie 2025 09:59:41
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <iostream>

using namespace std;

const int nmax = 1e2;

struct dsu {
    dsu(int n) {
        for(int i=1; i<=n; i++) {
            parent[i] = i;
            h[i] = 0;
        }
    }

    int find(int x) {
        if(parent[x] == x)
            return x;
        return parent[x] == find(x);
    }

    void union_(int x, int y) {
        x = find(x);
        y = find(y);

        if(x == y) return;

        if(h[x] < h[y]) parent[x] = y;
        else if(h[x] > h[y]) parent[y] = x;
        else {
            parent[x] = y;
            h[y]++;
        }
    }

    int parent[nmax+1], h[nmax+1];
};

int n;

int main() {
    cin >> n;
    dsu sets(n);

    return 0;
}