31 return rank_ < other.
rank_;
36 return rank_ > other.
rank_;
43 inline int getRank()
const {
return rank_;};
45 static inline UnionFind* makeUnion(vector<UnionFind *> &sets);
49 inline void setRank(
const int &rank) { rank_ = rank;};
60 inline UnionFind::UnionFind(){
66 inline UnionFind::UnionFind(
const UnionFind &other){
77 parent_ = parent_->
find();
107 static inline UnionFind* makeUnion(vector<UnionFind *> &sets){
111 if(!sets.size())
return NULL;
113 if(sets.size() == 1)
return sets[0];
115 for(
int i = 0; i < (int) sets.size() - 1; i++)
116 n = makeUnion(sets[i], sets[i + 1]);
Union Find implementation for connectivity tracking.
Definition: UnionFind.h:20
int rank_
Definition: UnionFind.h:49
bool operator<(const UnionFind &other) const
Definition: UnionFind.h:30
int getRank() const
Definition: UnionFind.h:43
bool operator>(const UnionFind &other) const
Definition: UnionFind.h:35
UnionFind * parent_
Definition: UnionFind.h:56
void setRank(const int &rank)
Definition: UnionFind.h:49
Minimalist debugging class.
Definition: Debug.h:39
Definition: CommandLineParser.h:13
UnionFind * find()
Definition: UnionFind.h:72
void setParent(UnionFind *parent)
Definition: UnionFind.h:47