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 DSFBase::findSet(size_t key) const {
|
||||||
size_t parent = (*v_)[key];
|
|
||||||
// follow parent pointers until we reach set representative
|
// follow parent pointers until we reach set representative
|
||||||
while (parent != key) {
|
size_t parent = (*v_)[key];
|
||||||
key = parent;
|
if (parent != key)
|
||||||
parent = (*v_)[key];
|
parent = findSet(parent); // recursive call
|
||||||
}
|
(*v_)[key] = parent; // path compression
|
||||||
return parent;
|
return parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue