diff options
| author | Gloria Mundi <gloria@gloria-mundi.eu> | 2024-11-16 18:09:36 +0100 |
|---|---|---|
| committer | Gloria Mundi <gloria@gloria-mundi.eu> | 2024-11-16 18:09:36 +0100 |
| commit | d52b0aee1e0d32c4c6f277e8291cedad2b4f1302 (patch) | |
| tree | 03d01cb60694bf6723a7400fffb2eff93d9d2039 /content | |
| parent | e55df069a8f83b2c0c2b56c035f49e89516cdaaa (diff) | |
add binary lifting test
Diffstat (limited to 'content')
| -rw-r--r-- | content/graph/binary_lifting.cpp | 6 |
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]; } |
