Added path compression
parent
ddd7c6663f
commit
42fda7913f
|
|
@ -43,12 +43,11 @@ DSFBase::DSFBase(const boost::shared_ptr<V>& v_in) {
|
|||
|
||||
/* ************************************************************************* */
|
||||
size_t DSFBase::findSet(size_t key) const {
|
||||
size_t parent = (*v_)[key];
|
||||
// follow parent pointers until we reach set representative
|
||||
while (parent != key) {
|
||||
key = parent;
|
||||
parent = (*v_)[key];
|
||||
}
|
||||
size_t parent = (*v_)[key];
|
||||
if (parent != key)
|
||||
parent = findSet(parent); // recursive call
|
||||
(*v_)[key] = parent; // path compression
|
||||
return parent;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue