1 #ifndef GL_DISJOINT_SETS_HPP
2 #define GL_DISJOINT_SETS_HPP
4 #include "../gl_base.hpp"
57 numElems_(numElems), rank_(numElems,0), parent_(numElems) {
58 for (
idx_t i = 0; i < numElems; ++i) {
64 GL_ASSERT(elem <
numElems_,std::string(std::string(
"DisjointSets::find || Element ")+std::to_string(elem)+std::string(
" is larger than the max: ")+std::to_string(
numElems_-1)));
71 GL_ASSERT(one <
numElems_,std::string(std::string(
"DisjointSets::find || Element ")+std::to_string(one)+std::string(
" is larger than the max: ")+std::to_string(
numElems_-1)));
72 GL_ASSERT(two <
numElems_,std::string(std::string(
"DisjointSets::find || Element ")+std::to_string(two)+std::string(
" is larger than the max: ")+std::to_string(
numElems_-1)));
88 #endif // GL_DISJOINT_SETS_HPP
std::vector< idx_t > rank_
Ranks of every element in their set.
Definition: DisjointSets.hpp:49
#define GL_ASSERT(EXPR, ERROR_MSG)
Custom assert that supports attaching a message.
Definition: gl_assert.hpp:14
std::size_t index_type
Definition: gl_base.hpp:18
idx_t numElems_
Initial number of sets.
Definition: DisjointSets.hpp:47
Represents disjoint sets.
Definition: DisjointSets.hpp:15
idx_t find(idx_t elem)
Finds the set parent of an element.
Definition: DisjointSets.hpp:63
gl::index_type idx_t
Definition: DisjointSets.hpp:16
DisjointSets()=default
Default constructor.
void merge(idx_t one, idx_t two)
Merges two of the disjoint sets.
Definition: DisjointSets.hpp:70
std::vector< idx_t > parent_
Parents of every element.
Definition: DisjointSets.hpp:48