41 void join(
size_t x,
size_t y)
43 size_t x_root =
find(x);
44 size_t y_root =
find(y);
46 if (x_root == y_root) {
50 if (ranks[x_root] < ranks[y_root]) {
51 std::swap(x_root, y_root);
53 parents[y_root] = x_root;
55 if (ranks[x_root] == ranks[y_root]) {