summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ripser.cpp19
1 files changed, 6 insertions, 13 deletions
diff --git a/ripser.cpp b/ripser.cpp
index 6bd725e..bd1a7db 100644
--- a/ripser.cpp
+++ b/ripser.cpp
@@ -252,23 +252,16 @@ public:
}
index_t find(index_t x) {
- index_t y = x, z = parent[y];
- while (z != y) {
- y = z;
- z = parent[y];
- }
- y = parent[x];
- while (z != y) {
- parent[x] = z;
- x = y;
- y = parent[x];
+ index_t y = x, z;
+ while ((z = parent[y]) != y) y = z;
+ while ((z = parent[x]) != y) {
+ parent[x] = y;
+ x = z;
}
return z;
}
void link(index_t x, index_t y) {
- x = find(x);
- y = find(y);
- if (x == y) return;
+ if ((x = find(x)) == (y = find(y))) return;
if (rank[x] > rank[y])
parent[y] = x;
else {