diff --git a/.verify-helper/timestamps.remote.json b/.verify-helper/timestamps.remote.json index f6222ff6..36529f6a 100644 --- a/.verify-helper/timestamps.remote.json +++ b/.verify-helper/timestamps.remote.json @@ -141,7 +141,7 @@ "tests/library_checker_aizu_tests/trees/hld_lib_checker_path.test.cpp": "2026-04-12 16:21:27 -0600", "tests/library_checker_aizu_tests/trees/hld_lib_checker_subtree_edges.test.cpp": "2026-04-12 16:21:27 -0600", "tests/library_checker_aizu_tests/trees/hld_lib_checker_subtree_nodes.test.cpp": "2026-04-12 16:21:27 -0600", -"tests/library_checker_aizu_tests/trees/kth_path_ladder.test.cpp": "2026-04-25 22:43:50 -0600", +"tests/library_checker_aizu_tests/trees/kth_path_ladder.test.cpp": "2026-04-26 11:11:53 -0600", "tests/library_checker_aizu_tests/trees/kth_path_linear.test.cpp": "2026-04-21 13:56:58 -0600", "tests/library_checker_aizu_tests/trees/kth_path_tree_lift.test.cpp": "2026-04-12 16:21:27 -0600", "tests/library_checker_aizu_tests/trees/lca_all_methods_aizu.test.cpp": "2026-04-21 13:56:58 -0600", diff --git a/library/trees/uncommon/ladder_decomposition.hpp b/library/trees/uncommon/ladder_decomposition.hpp index dc90910c..5f726d1d 100644 --- a/library/trees/uncommon/ladder_decomposition.hpp +++ b/library/trees/uncommon/ladder_decomposition.hpp @@ -14,30 +14,31 @@ //! @endcode struct ladder { int n; - vi d, p, idx, l; + vi d, p, idx, lad; vector jmp; ladder(const auto& g): - n(sz(g)), d(n), p(n), idx(n), l(2 * n) { + n(sz(g)), d(n), p(n), idx(n), lad(2 * n) { int i = 0; - vi s(n); + vi st(n); auto dfs = [&](auto dfs, int u) -> vi { vi path; - s[d[u]] = u; + st[d[u]] = u; for (int v : g[u]) if (v != p[u]) { d[v] = d[p[v] = u] + 1; vi x = dfs(dfs, v); if (sz(x) > sz(path)) swap(x, path); for (int y : x) idx[y] = i; - for (int y : x) l[i++] = y; - rep(j, 0, min(sz(x), d[v])) l[i++] = s[d[u] - j]; + for (int y : x) lad[i++] = y; + rep(j, 0, min(sz(x), d[v])) lad[i++] = + st[d[u] - j]; } path.push_back(u); return path; }; vi x = dfs(dfs, 0); for (int y : x) idx[y] = i; - for (int y : x) l[i++] = y; + for (int y : x) lad[i++] = y; jmp = treeJump(p); } int kth_par(int u, int k) { @@ -45,10 +46,10 @@ struct ladder { if (k == 0) return u; int bit = __lg(k); u = jmp[bit][u], k -= (1 << bit); - int i = idx[u], j = i + d[l[i]] - d[u]; - assert(l[j] == u); - // subarray [j, j+k] of l corresponds to the rest + int i = idx[u], j = i + d[lad[i]] - d[u]; + assert(lad[j] == u); + // subarray [j, j+k] of lad corresponds to the rest // of the jump - return l[j + k]; + return lad[j + k]; } }; diff --git a/tests/library_checker_aizu_tests/trees/kth_path_ladder.test.cpp b/tests/library_checker_aizu_tests/trees/kth_path_ladder.test.cpp index 0aa10aa3..95596e45 100644 --- a/tests/library_checker_aizu_tests/trees/kth_path_ladder.test.cpp +++ b/tests/library_checker_aizu_tests/trees/kth_path_ladder.test.cpp @@ -1,8 +1,6 @@ #define PROBLEM \ "https://judge.yosupo.jp/problem/jump_on_tree" #include "../template.hpp" -#undef sz -#define sz(x) (int)ssize(x) #include "../../../library/trees/uncommon/ladder_decomposition.hpp" int main() { cin.tie(0)->sync_with_stdio(0);