summaryrefslogtreecommitdiff
path: root/content
diff options
context:
space:
mode:
authorGloria Mundi <gloria@gloria-mundi.eu>2024-11-16 18:09:36 +0100
committerGloria Mundi <gloria@gloria-mundi.eu>2024-11-16 18:09:36 +0100
commitd52b0aee1e0d32c4c6f277e8291cedad2b4f1302 (patch)
tree03d01cb60694bf6723a7400fffb2eff93d9d2039 /content
parente55df069a8f83b2c0c2b56c035f49e89516cdaaa (diff)
add binary lifting test
Diffstat (limited to 'content')
-rw-r--r--content/graph/binary_lifting.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/content/graph/binary_lifting.cpp b/content/graph/binary_lifting.cpp
index 0b8c218..f88b1a9 100644
--- a/content/graph/binary_lifting.cpp
+++ b/content/graph/binary_lifting.cpp
@@ -3,13 +3,13 @@ struct Lift {
Lift(vector<vector<int>> &adj, int root):
dep(adj.size()), par(adj.size()), jmp(adj.size(), root) {
- function<void(int,int,int)> dfs = [&](int u, int p, int d) {
+ auto dfs = [&](auto &self, int u, int p, int d) -> void {
dep[u] = d, par[u] = p;
jmp[u] = dep[p] + dep[jmp[jmp[p]]] == 2*dep[jmp[p]]
? jmp[jmp[p]] : p;
- for (int v: adj[u]) if (v != p) dfs(v, u, d+1);
+ for (int v: adj[u]) if (v != p) self(self, v, u, d+1);
};
- dfs(root, root, 0);
+ dfs(dfs, root, root, 0);
}
int depth(int v) { return dep[v]; }