32 universe(
int elements);
35 void join(
int x,
int y);
36 int size(
int x)
const {
return elts[x].size; }
37 int num_sets()
const {
return num; }
44 universe::universe(
int elements) {
45 elts =
new uni_elt[elements];
47 for (
int i = 0; i < elements; i++) {
54 universe::~universe() {
58 int universe::find(
int x) {
60 while (y != elts[y].p)
66 void universe::join(
int x,
int y) {
67 if (elts[x].rank > elts[y].rank) {
69 elts[x].size += elts[y].size;
72 elts[y].size += elts[x].size;
73 if (elts[x].rank == elts[y].rank)