25 explicit UnionFind(std::size_t elementCount);
28 std::size_t
find(std::size_t x);
32 bool unite(std::size_t a, std::size_t b);
41 std::size_t
size()
const {
return parent_.size(); }
44 std::vector<std::size_t> parent_;
45 std::vector<std::uint8_t> rank_;
46 std::size_t componentCount_;
bool unite(std::size_t a, std::size_t b)
Joins the components containing a and b.
Definition UnionFind.cpp:23
UnionFind(std::size_t elementCount)
Constructs an instance with each of elementCount elements in its own component.
Definition UnionFind.cpp:6
std::size_t componentCount() const
Number of distinct components currently tracked.
Definition UnionFind.h:38
bool sameSet(std::size_t a, std::size_t b)
Reports whether a and b are in the same component.
Definition UnionFind.h:35
std::size_t size() const
Total elements managed by this instance.
Definition UnionFind.h:41
std::size_t find(std::size_t x)
Returns the root ID of the component containing x.
Definition UnionFind.cpp:13