Dostal jsem za domácí úkol vytvořit Union_find.h. Kde bude
UnionFind(int upperBound)
konstruktor třídy, upperBound je horní limit na hodnoty prvků ukládaných do množin; všechny vkládané prvky budou celá čísla v rozsahu od 1 do upperBound (včetně)
void make_set(int x)
vytvoří množinu obsahující prvek x
void union_sets(int x, int y)
sjednotí množiny obsahující prvky x a y
int find_set(int x)
vrátí reprezentanta množiny obsahující prvek x (tj. jeden z prvků této množiny, s podmínkou uvedenou výše)
int get_count(void)
vrátí počet disjunktních množin ve struktuře uložených (přesněji, počet tříd ekvivalence prvků podle relace příslušet do stejné množiny)
Napsal jsem to takhle
#include<iostream>
using namespace std;
class UnionFind
{ private:
public:
UnionFind(int upperBound){upper_bound(upperBound);}
void make_set(int x){set<int> mnoziny;
mnoziny.insert(int(x));}
void union_sets(int x, int y){set_union(x,y,iter);}
int find_set(int x){mnoziny.find(int(x));}
int get_count(void);
};
Union_find.h je vloženo v jiném programu, který když kompiluju tak vždycky hodí nějakou chybu ať do Union_find.h napíšu cokoliv.