From d3b34dee475aa592ecc3e83d23d2098239b3e1ed Mon Sep 17 00:00:00 2001 From: Luke Videckis Date: Sun, 12 Apr 2026 15:54:22 -0600 Subject: [PATCH 1/6] auto&& -> auto --- .../convolution/min_plus_convolution_convex_and_arbitrary.hpp | 2 +- library/graphs/bcc_callback.hpp | 2 +- library/graphs/euler_path.hpp | 2 +- library/graphs/hopcroft_karp.hpp | 2 +- library/graphs/scc.hpp | 2 +- .../add_edges_strongly_connected.hpp | 2 +- .../strongly_connected_components/offline_incremental_scc.hpp | 2 +- library/graphs/uncommon/bridges.hpp | 2 +- library/graphs/uncommon/cuts.hpp | 2 +- library/trees/edge_cd.hpp | 4 ++-- library/trees/hld.hpp | 4 ++-- library/trees/lca_rmq.hpp | 2 +- library/trees/linear_lca.hpp | 2 +- library/trees/shallowest_decomp_tree.hpp | 2 +- library/trees/tree_lift.hpp | 2 +- library/trees/uncommon/ladder_decomposition.hpp | 2 +- library/trees/uncommon/linear_kth_par.hpp | 2 +- library/trees/uncommon/subtree_isomorphism.hpp | 2 +- 18 files changed, 20 insertions(+), 20 deletions(-) diff --git a/library/convolution/min_plus_convolution_convex_and_arbitrary.hpp b/library/convolution/min_plus_convolution_convex_and_arbitrary.hpp index 5bb6d150e..1e2e013fe 100644 --- a/library/convolution/min_plus_convolution_convex_and_arbitrary.hpp +++ b/library/convolution/min_plus_convolution_convex_and_arbitrary.hpp @@ -9,7 +9,7 @@ vi min_plus(const vi& convex, const vi& arbitrary) { int n = sz(convex); int m = sz(arbitrary); vi res(n + m - 1, INT_MAX); - auto dnc = [&](auto&& dnc, int res_le, int res_ri, + auto dnc = [&](auto dnc, int res_le, int res_ri, int arb_le, int arb_ri) -> void { if (res_le >= res_ri) return; int mid_res = (res_le + res_ri) / 2; diff --git a/library/graphs/bcc_callback.hpp b/library/graphs/bcc_callback.hpp index 268bdd808..f2646f779 100644 --- a/library/graphs/bcc_callback.hpp +++ b/library/graphs/bcc_callback.hpp @@ -44,7 +44,7 @@ void bcc(const auto& g, auto f) { int n = sz(g), q = 0, s = 0; vi t(n), st(n); - auto dfs = [&](auto&& dfs, int u) -> int { + auto dfs = [&](auto dfs, int u) -> int { int l = t[u] = ++q; for (int v : g[u]) { int siz = s, lu = 0; diff --git a/library/graphs/euler_path.hpp b/library/graphs/euler_path.hpp index e0ab350f4..127e192ef 100644 --- a/library/graphs/euler_path.hpp +++ b/library/graphs/euler_path.hpp @@ -16,7 +16,7 @@ vector euler_path(auto& g, int m, int s) { vi vis(m); vector path; - auto dfs = [&](auto&& dfs, int u, int eu) -> void { + auto dfs = [&](auto dfs, int u, int eu) -> void { while (!empty(g[u])) { auto [v, ev] = g[u].back(); g[u].pop_back(); diff --git a/library/graphs/hopcroft_karp.hpp b/library/graphs/hopcroft_karp.hpp index 586def983..07027b4eb 100644 --- a/library/graphs/hopcroft_karp.hpp +++ b/library/graphs/hopcroft_karp.hpp @@ -43,7 +43,7 @@ struct hopcroft_karp { } } if (!found) break; - auto dfs = [&](auto&& dfs, int u) -> bool { + auto dfs = [&](auto dfs, int u) -> bool { for (int v : g[u]) { int w = to_l[v]; if (w == -1 || diff --git a/library/graphs/scc.hpp b/library/graphs/scc.hpp index fc2673cf1..f2bdc8780 100644 --- a/library/graphs/scc.hpp +++ b/library/graphs/scc.hpp @@ -11,7 +11,7 @@ auto scc(const auto& g) { int n = sz(g), num_sccs = 0, q = 0, s = 0; vi scc_id(n, -1), tin(n), st(n); - auto dfs = [&](auto&& dfs, int u) -> int { + auto dfs = [&](auto dfs, int u) -> int { int low = tin[u] = ++q; st[s++] = u; for (int v : g[u]) diff --git a/library/graphs/strongly_connected_components/add_edges_strongly_connected.hpp b/library/graphs/strongly_connected_components/add_edges_strongly_connected.hpp index 01dc54b6b..e838ff4f0 100644 --- a/library/graphs/strongly_connected_components/add_edges_strongly_connected.hpp +++ b/library/graphs/strongly_connected_components/add_edges_strongly_connected.hpp @@ -29,7 +29,7 @@ vector extra_edges(const auto& g, int num_sccs, zero_in[scc_id[v]] = 0; } vector vis(num_sccs); - auto dfs = [&](auto&& dfs, int u) { + auto dfs = [&](auto dfs, int u) { if (empty(scc_g[u])) return u; for (int v : scc_g[u]) if (!vis[v]) { diff --git a/library/graphs/strongly_connected_components/offline_incremental_scc.hpp b/library/graphs/strongly_connected_components/offline_incremental_scc.hpp index ae03effed..9d9514e7d 100644 --- a/library/graphs/strongly_connected_components/offline_incremental_scc.hpp +++ b/library/graphs/strongly_connected_components/offline_incremental_scc.hpp @@ -16,7 +16,7 @@ vi offline_incremental_scc(vector> eds, vi ids(n, -1), joins(m, m), idx(m), vs(n), scc_id; iota(all(idx), 0); vector g; - auto dnc = [&](auto&& dnc, auto el, auto er, int tl, + auto dnc = [&](auto dnc, auto el, auto er, int tl, int tr) { g.clear(); int mid = midpoint(tl, tr); diff --git a/library/graphs/uncommon/bridges.hpp b/library/graphs/uncommon/bridges.hpp index 01d5f7868..050ebe333 100644 --- a/library/graphs/uncommon/bridges.hpp +++ b/library/graphs/uncommon/bridges.hpp @@ -18,7 +18,7 @@ auto bridges(const auto& g, int m) { int n = sz(g), num_ccs = 0, q = 0, s = 0; vi br_id(n, -1), is_br(m), tin(n), st(n); - auto dfs = [&](auto&& dfs, int u, int p) -> int { + auto dfs = [&](auto dfs, int u, int p) -> int { int low = tin[u] = ++q; st[s++] = u; for (auto [v, e] : g[u]) diff --git a/library/graphs/uncommon/cuts.hpp b/library/graphs/uncommon/cuts.hpp index 8986ae2bb..03cb38894 100644 --- a/library/graphs/uncommon/cuts.hpp +++ b/library/graphs/uncommon/cuts.hpp @@ -19,7 +19,7 @@ auto cuts(const auto& g, int m) { int n = sz(g), num_bccs = 0, q = 0, s = 0; vi bcc_id(m, -1), is_cut(n), tin(n), st(m); - auto dfs = [&](auto&& dfs, int u, int p) -> int { + auto dfs = [&](auto dfs, int u, int p) -> int { int low = tin[u] = ++q; for (auto [v, e] : g[u]) { assert(u != v); diff --git a/library/trees/edge_cd.hpp b/library/trees/edge_cd.hpp index fcab906fc..4c6efe90e 100644 --- a/library/trees/edge_cd.hpp +++ b/library/trees/edge_cd.hpp @@ -15,7 +15,7 @@ //! @space O(n) template void edge_cd(vector& g, auto f) { vi siz(sz(g)); - auto ctd = [&](auto&& ctd, int u, int p, int m) -> int { + auto ctd = [&](auto ctd, int u, int p, int m) -> int { siz[u] = 1; for (int v : g[u]) if (v != p) { @@ -25,7 +25,7 @@ template void edge_cd(vector& g, auto f) { return 2 * siz[u] > m ? siz[p] = m + 1 - siz[u], u : -1; }; - auto dfs = [&](auto&& dfs, int u, int m) -> void { + auto dfs = [&](auto dfs, int u, int m) -> void { if (m < 2) return; u = ctd(ctd, u, u, m); int sum = 0; diff --git a/library/trees/hld.hpp b/library/trees/hld.hpp index 577c5f0c0..65263ba55 100644 --- a/library/trees/hld.hpp +++ b/library/trees/hld.hpp @@ -14,7 +14,7 @@ template struct HLD { int n; vi p, siz, rt, tin; HLD(auto& g): n(sz(g)), p(n), siz(n, 1), rt(n), tin(n) { - auto dfs1 = [&](auto&& dfs1, int u) -> void { + auto dfs1 = [&](auto dfs1, int u) -> void { for (int& v : g[u]) { erase(g[v], p[v] = u); dfs1(dfs1, v); @@ -24,7 +24,7 @@ template struct HLD { }; dfs1(dfs1, 0); int tim = 0; - auto dfs2 = [&](auto&& dfs2, int u) -> void { + auto dfs2 = [&](auto dfs2, int u) -> void { tin[u] = tim++; for (int v : g[u]) { rt[v] = (v == g[u][0] ? rt[u] : v); diff --git a/library/trees/lca_rmq.hpp b/library/trees/lca_rmq.hpp index 1b87f7ef7..ea3bc6605 100644 --- a/library/trees/lca_rmq.hpp +++ b/library/trees/lca_rmq.hpp @@ -16,7 +16,7 @@ struct LCA { LCA(const auto& g): n(sz(g)), tin(n), siz(n, 1), d(n), p(n) { vi order; - auto dfs = [&](auto&& dfs, int u) -> void { + auto dfs = [&](auto dfs, int u) -> void { tin[u] = sz(order), order.push_back(u); for (int v : g[u]) if (v != p[u]) diff --git a/library/trees/linear_lca.hpp b/library/trees/linear_lca.hpp index 7da346b23..779439ad3 100644 --- a/library/trees/linear_lca.hpp +++ b/library/trees/linear_lca.hpp @@ -13,7 +13,7 @@ struct linear_lca { linear_lca(const auto& g): n(sz(g)), d(n), in(n), asc(n), head(n + 1) { vector order; - auto dfs = [&](auto&& dfs, int u, int p) -> void { + auto dfs = [&](auto dfs, int u, int p) -> void { order.emplace_back(u, p), in[u] = sz(order); for (int v : g[u]) if (v != p) { diff --git a/library/trees/shallowest_decomp_tree.hpp b/library/trees/shallowest_decomp_tree.hpp index bb35d2c01..6cd0f46d4 100644 --- a/library/trees/shallowest_decomp_tree.hpp +++ b/library/trees/shallowest_decomp_tree.hpp @@ -9,7 +9,7 @@ //! @space O(n) void shallowest(auto& g, auto f) { vector order(bit_width(size(g))); - auto dfs = [&](auto&& dfs, int u, int p) -> int { + auto dfs = [&](auto dfs, int u, int p) -> int { int once = 0, twice = 0; for (int v : g[u]) if (v != p) { diff --git a/library/trees/tree_lift.hpp b/library/trees/tree_lift.hpp index 22dfb4bea..d7ea4873c 100644 --- a/library/trees/tree_lift.hpp +++ b/library/trees/tree_lift.hpp @@ -11,7 +11,7 @@ struct tree_lift { vi d, p, j; tree_lift(const auto& g): d(sz(g)), p(d), j(d) { - auto dfs = [&](auto&& dfs, int u) -> void { + auto dfs = [&](auto dfs, int u) -> void { int up = d[u] + d[j[j[u]]] == 2 * d[j[u]] ? j[j[u]] : u; for (int v : g[u]) diff --git a/library/trees/uncommon/ladder_decomposition.hpp b/library/trees/uncommon/ladder_decomposition.hpp index 3e8844ff0..7dede21cd 100644 --- a/library/trees/uncommon/ladder_decomposition.hpp +++ b/library/trees/uncommon/ladder_decomposition.hpp @@ -17,7 +17,7 @@ struct ladder { //! @space O(n log n) for jmp. Everything else is O(n) ladder(const auto& g): n(sz(g)), d(n), p(n), leaf(n), idx(n), lad(2 * n) { - auto dfs = [&](auto&& dfs, int u) -> void { + auto dfs = [&](auto dfs, int u) -> void { leaf[u] = u; for (int v : g[u]) if (v != p[u]) { diff --git a/library/trees/uncommon/linear_kth_par.hpp b/library/trees/uncommon/linear_kth_par.hpp index 8801a3c01..1eebc91c1 100644 --- a/library/trees/uncommon/linear_kth_par.hpp +++ b/library/trees/uncommon/linear_kth_par.hpp @@ -21,7 +21,7 @@ template struct linear_kth_par { jmp[t] = st[max(0, s - KAPPA * (t & -t))]; t++; }; - auto dfs = [&](auto&& dfs, int u, int p) -> void { + auto dfs = [&](auto dfs, int u, int p) -> void { int& l = leaf[u] = st[d[u]] = u; pos[u] = t; calc(d[u]); diff --git a/library/trees/uncommon/subtree_isomorphism.hpp b/library/trees/uncommon/subtree_isomorphism.hpp index 708941d89..2c81cd50c 100644 --- a/library/trees/uncommon/subtree_isomorphism.hpp +++ b/library/trees/uncommon/subtree_isomorphism.hpp @@ -12,7 +12,7 @@ auto subtree_iso(const auto& g) { vi iso_id(sz(g), -1); map hashes; - auto dfs = [&](auto&& dfs, int u, int p) -> int { + auto dfs = [&](auto dfs, int u, int p) -> int { vi ch_ids; for (int v : g[u]) if (v != p) ch_ids.push_back(dfs(dfs, v, u)); From 2d1c7d8d87d2cd3ff4b72d4c8b3adaec3cfbad5c Mon Sep 17 00:00:00 2001 From: Luke Videckis Date: Sun, 12 Apr 2026 16:04:53 -0600 Subject: [PATCH 2/6] remove return type as well --- .../convolution/min_plus_convolution_convex_and_arbitrary.hpp | 2 +- library/graphs/bcc_callback.hpp | 2 +- library/graphs/euler_path.hpp | 2 +- library/graphs/hopcroft_karp.hpp | 2 +- library/graphs/scc.hpp | 2 +- library/graphs/uncommon/bridges.hpp | 2 +- library/graphs/uncommon/cuts.hpp | 2 +- library/trees/edge_cd.hpp | 4 ++-- library/trees/hld.hpp | 4 ++-- library/trees/lca_rmq.hpp | 2 +- library/trees/linear_lca.hpp | 2 +- library/trees/shallowest_decomp_tree.hpp | 2 +- library/trees/tree_lift.hpp | 2 +- library/trees/uncommon/ladder_decomposition.hpp | 2 +- library/trees/uncommon/linear_kth_par.hpp | 2 +- library/trees/uncommon/subtree_isomorphism.hpp | 2 +- 16 files changed, 18 insertions(+), 18 deletions(-) diff --git a/library/convolution/min_plus_convolution_convex_and_arbitrary.hpp b/library/convolution/min_plus_convolution_convex_and_arbitrary.hpp index 1e2e013fe..9253c93c8 100644 --- a/library/convolution/min_plus_convolution_convex_and_arbitrary.hpp +++ b/library/convolution/min_plus_convolution_convex_and_arbitrary.hpp @@ -10,7 +10,7 @@ vi min_plus(const vi& convex, const vi& arbitrary) { int m = sz(arbitrary); vi res(n + m - 1, INT_MAX); auto dnc = [&](auto dnc, int res_le, int res_ri, - int arb_le, int arb_ri) -> void { + int arb_le, int arb_ri) { if (res_le >= res_ri) return; int mid_res = (res_le + res_ri) / 2; int op_arb = arb_le; diff --git a/library/graphs/bcc_callback.hpp b/library/graphs/bcc_callback.hpp index f2646f779..967c6061b 100644 --- a/library/graphs/bcc_callback.hpp +++ b/library/graphs/bcc_callback.hpp @@ -44,7 +44,7 @@ void bcc(const auto& g, auto f) { int n = sz(g), q = 0, s = 0; vi t(n), st(n); - auto dfs = [&](auto dfs, int u) -> int { + auto dfs = [&](auto dfs, int u) { int l = t[u] = ++q; for (int v : g[u]) { int siz = s, lu = 0; diff --git a/library/graphs/euler_path.hpp b/library/graphs/euler_path.hpp index 127e192ef..db0b39e3e 100644 --- a/library/graphs/euler_path.hpp +++ b/library/graphs/euler_path.hpp @@ -16,7 +16,7 @@ vector euler_path(auto& g, int m, int s) { vi vis(m); vector path; - auto dfs = [&](auto dfs, int u, int eu) -> void { + auto dfs = [&](auto dfs, int u, int eu) { while (!empty(g[u])) { auto [v, ev] = g[u].back(); g[u].pop_back(); diff --git a/library/graphs/hopcroft_karp.hpp b/library/graphs/hopcroft_karp.hpp index 07027b4eb..0d9c96826 100644 --- a/library/graphs/hopcroft_karp.hpp +++ b/library/graphs/hopcroft_karp.hpp @@ -43,7 +43,7 @@ struct hopcroft_karp { } } if (!found) break; - auto dfs = [&](auto dfs, int u) -> bool { + auto dfs = [&](auto dfs, int u) { for (int v : g[u]) { int w = to_l[v]; if (w == -1 || diff --git a/library/graphs/scc.hpp b/library/graphs/scc.hpp index f2bdc8780..46dcd9eaa 100644 --- a/library/graphs/scc.hpp +++ b/library/graphs/scc.hpp @@ -11,7 +11,7 @@ auto scc(const auto& g) { int n = sz(g), num_sccs = 0, q = 0, s = 0; vi scc_id(n, -1), tin(n), st(n); - auto dfs = [&](auto dfs, int u) -> int { + auto dfs = [&](auto dfs, int u) { int low = tin[u] = ++q; st[s++] = u; for (int v : g[u]) diff --git a/library/graphs/uncommon/bridges.hpp b/library/graphs/uncommon/bridges.hpp index 050ebe333..207ba08c1 100644 --- a/library/graphs/uncommon/bridges.hpp +++ b/library/graphs/uncommon/bridges.hpp @@ -18,7 +18,7 @@ auto bridges(const auto& g, int m) { int n = sz(g), num_ccs = 0, q = 0, s = 0; vi br_id(n, -1), is_br(m), tin(n), st(n); - auto dfs = [&](auto dfs, int u, int p) -> int { + auto dfs = [&](auto dfs, int u, int p) { int low = tin[u] = ++q; st[s++] = u; for (auto [v, e] : g[u]) diff --git a/library/graphs/uncommon/cuts.hpp b/library/graphs/uncommon/cuts.hpp index 03cb38894..e1a6a32b8 100644 --- a/library/graphs/uncommon/cuts.hpp +++ b/library/graphs/uncommon/cuts.hpp @@ -19,7 +19,7 @@ auto cuts(const auto& g, int m) { int n = sz(g), num_bccs = 0, q = 0, s = 0; vi bcc_id(m, -1), is_cut(n), tin(n), st(m); - auto dfs = [&](auto dfs, int u, int p) -> int { + auto dfs = [&](auto dfs, int u, int p) { int low = tin[u] = ++q; for (auto [v, e] : g[u]) { assert(u != v); diff --git a/library/trees/edge_cd.hpp b/library/trees/edge_cd.hpp index 4c6efe90e..245baf3de 100644 --- a/library/trees/edge_cd.hpp +++ b/library/trees/edge_cd.hpp @@ -15,7 +15,7 @@ //! @space O(n) template void edge_cd(vector& g, auto f) { vi siz(sz(g)); - auto ctd = [&](auto ctd, int u, int p, int m) -> int { + auto ctd = [&](auto ctd, int u, int p, int m) { siz[u] = 1; for (int v : g[u]) if (v != p) { @@ -25,7 +25,7 @@ template void edge_cd(vector& g, auto f) { return 2 * siz[u] > m ? siz[p] = m + 1 - siz[u], u : -1; }; - auto dfs = [&](auto dfs, int u, int m) -> void { + auto dfs = [&](auto dfs, int u, int m) { if (m < 2) return; u = ctd(ctd, u, u, m); int sum = 0; diff --git a/library/trees/hld.hpp b/library/trees/hld.hpp index 65263ba55..feebeb109 100644 --- a/library/trees/hld.hpp +++ b/library/trees/hld.hpp @@ -14,7 +14,7 @@ template struct HLD { int n; vi p, siz, rt, tin; HLD(auto& g): n(sz(g)), p(n), siz(n, 1), rt(n), tin(n) { - auto dfs1 = [&](auto dfs1, int u) -> void { + auto dfs1 = [&](auto dfs1, int u) { for (int& v : g[u]) { erase(g[v], p[v] = u); dfs1(dfs1, v); @@ -24,7 +24,7 @@ template struct HLD { }; dfs1(dfs1, 0); int tim = 0; - auto dfs2 = [&](auto dfs2, int u) -> void { + auto dfs2 = [&](auto dfs2, int u) { tin[u] = tim++; for (int v : g[u]) { rt[v] = (v == g[u][0] ? rt[u] : v); diff --git a/library/trees/lca_rmq.hpp b/library/trees/lca_rmq.hpp index ea3bc6605..aea22e13c 100644 --- a/library/trees/lca_rmq.hpp +++ b/library/trees/lca_rmq.hpp @@ -16,7 +16,7 @@ struct LCA { LCA(const auto& g): n(sz(g)), tin(n), siz(n, 1), d(n), p(n) { vi order; - auto dfs = [&](auto dfs, int u) -> void { + auto dfs = [&](auto dfs, int u) { tin[u] = sz(order), order.push_back(u); for (int v : g[u]) if (v != p[u]) diff --git a/library/trees/linear_lca.hpp b/library/trees/linear_lca.hpp index 779439ad3..5c792f6c7 100644 --- a/library/trees/linear_lca.hpp +++ b/library/trees/linear_lca.hpp @@ -13,7 +13,7 @@ struct linear_lca { linear_lca(const auto& g): n(sz(g)), d(n), in(n), asc(n), head(n + 1) { vector order; - auto dfs = [&](auto dfs, int u, int p) -> void { + auto dfs = [&](auto dfs, int u, int p) { order.emplace_back(u, p), in[u] = sz(order); for (int v : g[u]) if (v != p) { diff --git a/library/trees/shallowest_decomp_tree.hpp b/library/trees/shallowest_decomp_tree.hpp index 6cd0f46d4..1cb412e2b 100644 --- a/library/trees/shallowest_decomp_tree.hpp +++ b/library/trees/shallowest_decomp_tree.hpp @@ -9,7 +9,7 @@ //! @space O(n) void shallowest(auto& g, auto f) { vector order(bit_width(size(g))); - auto dfs = [&](auto dfs, int u, int p) -> int { + auto dfs = [&](auto dfs, int u, int p) { int once = 0, twice = 0; for (int v : g[u]) if (v != p) { diff --git a/library/trees/tree_lift.hpp b/library/trees/tree_lift.hpp index d7ea4873c..bfda5afd8 100644 --- a/library/trees/tree_lift.hpp +++ b/library/trees/tree_lift.hpp @@ -11,7 +11,7 @@ struct tree_lift { vi d, p, j; tree_lift(const auto& g): d(sz(g)), p(d), j(d) { - auto dfs = [&](auto dfs, int u) -> void { + auto dfs = [&](auto dfs, int u) { int up = d[u] + d[j[j[u]]] == 2 * d[j[u]] ? j[j[u]] : u; for (int v : g[u]) diff --git a/library/trees/uncommon/ladder_decomposition.hpp b/library/trees/uncommon/ladder_decomposition.hpp index 7dede21cd..b5af40ca8 100644 --- a/library/trees/uncommon/ladder_decomposition.hpp +++ b/library/trees/uncommon/ladder_decomposition.hpp @@ -17,7 +17,7 @@ struct ladder { //! @space O(n log n) for jmp. Everything else is O(n) ladder(const auto& g): n(sz(g)), d(n), p(n), leaf(n), idx(n), lad(2 * n) { - auto dfs = [&](auto dfs, int u) -> void { + auto dfs = [&](auto dfs, int u) { leaf[u] = u; for (int v : g[u]) if (v != p[u]) { diff --git a/library/trees/uncommon/linear_kth_par.hpp b/library/trees/uncommon/linear_kth_par.hpp index 1eebc91c1..958304bdc 100644 --- a/library/trees/uncommon/linear_kth_par.hpp +++ b/library/trees/uncommon/linear_kth_par.hpp @@ -21,7 +21,7 @@ template struct linear_kth_par { jmp[t] = st[max(0, s - KAPPA * (t & -t))]; t++; }; - auto dfs = [&](auto dfs, int u, int p) -> void { + auto dfs = [&](auto dfs, int u, int p) { int& l = leaf[u] = st[d[u]] = u; pos[u] = t; calc(d[u]); diff --git a/library/trees/uncommon/subtree_isomorphism.hpp b/library/trees/uncommon/subtree_isomorphism.hpp index 2c81cd50c..0d4adae7f 100644 --- a/library/trees/uncommon/subtree_isomorphism.hpp +++ b/library/trees/uncommon/subtree_isomorphism.hpp @@ -12,7 +12,7 @@ auto subtree_iso(const auto& g) { vi iso_id(sz(g), -1); map hashes; - auto dfs = [&](auto dfs, int u, int p) -> int { + auto dfs = [&](auto dfs, int u, int p) { vi ch_ids; for (int v : g[u]) if (v != p) ch_ids.push_back(dfs(dfs, v, u)); From f824ccabcf372b4e8ed89e49b8beeec204243877 Mon Sep 17 00:00:00 2001 From: Luke Videckis Date: Sun, 12 Apr 2026 16:05:23 -0600 Subject: [PATCH 3/6] missed this one --- library/trees/centroid_decomp.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/trees/centroid_decomp.hpp b/library/trees/centroid_decomp.hpp index f42029188..37b99f264 100644 --- a/library/trees/centroid_decomp.hpp +++ b/library/trees/centroid_decomp.hpp @@ -7,7 +7,7 @@ //! @space O(n) void centroid(auto& g, auto f) { vi siz(sz(g)); - auto ctd = [&](auto ctd, int u, int p, int n) -> int { + auto ctd = [&](auto ctd, int u, int p, int n) { siz[u] = 1; for (int v : g[u]) if (v != p) { @@ -16,7 +16,7 @@ void centroid(auto& g, auto f) { } return 2 * siz[u] >= n ? siz[p] = n - siz[u], u : -1; }; - auto dfs = [&](auto dfs, int u, int p, int n) -> void { + auto dfs = [&](auto dfs, int u, int p, int n) { f(u = ctd(ctd, u, u, n), p); for (int v : g[u]) erase(g[v], u), dfs(dfs, v, u, siz[v]); From 237254dd329ecb0b5c445399cb5bfaf0f20ffb0e Mon Sep 17 00:00:00 2001 From: Luke Videckis Date: Sun, 12 Apr 2026 16:13:36 -0600 Subject: [PATCH 4/6] add these back --- library/trees/centroid_decomp.hpp | 2 +- library/trees/edge_cd.hpp | 2 +- library/trees/hld.hpp | 4 ++-- library/trees/lca_rmq.hpp | 2 +- library/trees/linear_lca.hpp | 2 +- library/trees/shallowest_decomp_tree.hpp | 2 +- library/trees/tree_lift.hpp | 2 +- library/trees/uncommon/ladder_decomposition.hpp | 2 +- library/trees/uncommon/subtree_isomorphism.hpp | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/library/trees/centroid_decomp.hpp b/library/trees/centroid_decomp.hpp index 37b99f264..09ed3b482 100644 --- a/library/trees/centroid_decomp.hpp +++ b/library/trees/centroid_decomp.hpp @@ -7,7 +7,7 @@ //! @space O(n) void centroid(auto& g, auto f) { vi siz(sz(g)); - auto ctd = [&](auto ctd, int u, int p, int n) { + auto ctd = [&](auto ctd, int u, int p, int n) -> int { siz[u] = 1; for (int v : g[u]) if (v != p) { diff --git a/library/trees/edge_cd.hpp b/library/trees/edge_cd.hpp index 245baf3de..b8be23d51 100644 --- a/library/trees/edge_cd.hpp +++ b/library/trees/edge_cd.hpp @@ -15,7 +15,7 @@ //! @space O(n) template void edge_cd(vector& g, auto f) { vi siz(sz(g)); - auto ctd = [&](auto ctd, int u, int p, int m) { + auto ctd = [&](auto ctd, int u, int p, int m) -> int { siz[u] = 1; for (int v : g[u]) if (v != p) { diff --git a/library/trees/hld.hpp b/library/trees/hld.hpp index feebeb109..65263ba55 100644 --- a/library/trees/hld.hpp +++ b/library/trees/hld.hpp @@ -14,7 +14,7 @@ template struct HLD { int n; vi p, siz, rt, tin; HLD(auto& g): n(sz(g)), p(n), siz(n, 1), rt(n), tin(n) { - auto dfs1 = [&](auto dfs1, int u) { + auto dfs1 = [&](auto dfs1, int u) -> void { for (int& v : g[u]) { erase(g[v], p[v] = u); dfs1(dfs1, v); @@ -24,7 +24,7 @@ template struct HLD { }; dfs1(dfs1, 0); int tim = 0; - auto dfs2 = [&](auto dfs2, int u) { + auto dfs2 = [&](auto dfs2, int u) -> void { tin[u] = tim++; for (int v : g[u]) { rt[v] = (v == g[u][0] ? rt[u] : v); diff --git a/library/trees/lca_rmq.hpp b/library/trees/lca_rmq.hpp index aea22e13c..ea3bc6605 100644 --- a/library/trees/lca_rmq.hpp +++ b/library/trees/lca_rmq.hpp @@ -16,7 +16,7 @@ struct LCA { LCA(const auto& g): n(sz(g)), tin(n), siz(n, 1), d(n), p(n) { vi order; - auto dfs = [&](auto dfs, int u) { + auto dfs = [&](auto dfs, int u) -> void { tin[u] = sz(order), order.push_back(u); for (int v : g[u]) if (v != p[u]) diff --git a/library/trees/linear_lca.hpp b/library/trees/linear_lca.hpp index 5c792f6c7..779439ad3 100644 --- a/library/trees/linear_lca.hpp +++ b/library/trees/linear_lca.hpp @@ -13,7 +13,7 @@ struct linear_lca { linear_lca(const auto& g): n(sz(g)), d(n), in(n), asc(n), head(n + 1) { vector order; - auto dfs = [&](auto dfs, int u, int p) { + auto dfs = [&](auto dfs, int u, int p) -> void { order.emplace_back(u, p), in[u] = sz(order); for (int v : g[u]) if (v != p) { diff --git a/library/trees/shallowest_decomp_tree.hpp b/library/trees/shallowest_decomp_tree.hpp index 1cb412e2b..6cd0f46d4 100644 --- a/library/trees/shallowest_decomp_tree.hpp +++ b/library/trees/shallowest_decomp_tree.hpp @@ -9,7 +9,7 @@ //! @space O(n) void shallowest(auto& g, auto f) { vector order(bit_width(size(g))); - auto dfs = [&](auto dfs, int u, int p) { + auto dfs = [&](auto dfs, int u, int p) -> int { int once = 0, twice = 0; for (int v : g[u]) if (v != p) { diff --git a/library/trees/tree_lift.hpp b/library/trees/tree_lift.hpp index bfda5afd8..d7ea4873c 100644 --- a/library/trees/tree_lift.hpp +++ b/library/trees/tree_lift.hpp @@ -11,7 +11,7 @@ struct tree_lift { vi d, p, j; tree_lift(const auto& g): d(sz(g)), p(d), j(d) { - auto dfs = [&](auto dfs, int u) { + auto dfs = [&](auto dfs, int u) -> void { int up = d[u] + d[j[j[u]]] == 2 * d[j[u]] ? j[j[u]] : u; for (int v : g[u]) diff --git a/library/trees/uncommon/ladder_decomposition.hpp b/library/trees/uncommon/ladder_decomposition.hpp index b5af40ca8..7dede21cd 100644 --- a/library/trees/uncommon/ladder_decomposition.hpp +++ b/library/trees/uncommon/ladder_decomposition.hpp @@ -17,7 +17,7 @@ struct ladder { //! @space O(n log n) for jmp. Everything else is O(n) ladder(const auto& g): n(sz(g)), d(n), p(n), leaf(n), idx(n), lad(2 * n) { - auto dfs = [&](auto dfs, int u) { + auto dfs = [&](auto dfs, int u) -> void { leaf[u] = u; for (int v : g[u]) if (v != p[u]) { diff --git a/library/trees/uncommon/subtree_isomorphism.hpp b/library/trees/uncommon/subtree_isomorphism.hpp index 0d4adae7f..2c81cd50c 100644 --- a/library/trees/uncommon/subtree_isomorphism.hpp +++ b/library/trees/uncommon/subtree_isomorphism.hpp @@ -12,7 +12,7 @@ auto subtree_iso(const auto& g) { vi iso_id(sz(g), -1); map hashes; - auto dfs = [&](auto dfs, int u, int p) { + auto dfs = [&](auto dfs, int u, int p) -> int { vi ch_ids; for (int v : g[u]) if (v != p) ch_ids.push_back(dfs(dfs, v, u)); From aa0d86217ad2b1105dd7b2042d3672f7ee7057d5 Mon Sep 17 00:00:00 2001 From: Luke Videckis Date: Sun, 12 Apr 2026 16:16:16 -0600 Subject: [PATCH 5/6] put these back as well --- library/graphs/bcc_callback.hpp | 2 +- library/graphs/euler_path.hpp | 2 +- library/graphs/hopcroft_karp.hpp | 2 +- library/graphs/scc.hpp | 2 +- library/graphs/uncommon/cuts.hpp | 2 +- library/trees/centroid_decomp.hpp | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/library/graphs/bcc_callback.hpp b/library/graphs/bcc_callback.hpp index 967c6061b..f2646f779 100644 --- a/library/graphs/bcc_callback.hpp +++ b/library/graphs/bcc_callback.hpp @@ -44,7 +44,7 @@ void bcc(const auto& g, auto f) { int n = sz(g), q = 0, s = 0; vi t(n), st(n); - auto dfs = [&](auto dfs, int u) { + auto dfs = [&](auto dfs, int u) -> int { int l = t[u] = ++q; for (int v : g[u]) { int siz = s, lu = 0; diff --git a/library/graphs/euler_path.hpp b/library/graphs/euler_path.hpp index db0b39e3e..127e192ef 100644 --- a/library/graphs/euler_path.hpp +++ b/library/graphs/euler_path.hpp @@ -16,7 +16,7 @@ vector euler_path(auto& g, int m, int s) { vi vis(m); vector path; - auto dfs = [&](auto dfs, int u, int eu) { + auto dfs = [&](auto dfs, int u, int eu) -> void { while (!empty(g[u])) { auto [v, ev] = g[u].back(); g[u].pop_back(); diff --git a/library/graphs/hopcroft_karp.hpp b/library/graphs/hopcroft_karp.hpp index 0d9c96826..07027b4eb 100644 --- a/library/graphs/hopcroft_karp.hpp +++ b/library/graphs/hopcroft_karp.hpp @@ -43,7 +43,7 @@ struct hopcroft_karp { } } if (!found) break; - auto dfs = [&](auto dfs, int u) { + auto dfs = [&](auto dfs, int u) -> bool { for (int v : g[u]) { int w = to_l[v]; if (w == -1 || diff --git a/library/graphs/scc.hpp b/library/graphs/scc.hpp index 46dcd9eaa..f2bdc8780 100644 --- a/library/graphs/scc.hpp +++ b/library/graphs/scc.hpp @@ -11,7 +11,7 @@ auto scc(const auto& g) { int n = sz(g), num_sccs = 0, q = 0, s = 0; vi scc_id(n, -1), tin(n), st(n); - auto dfs = [&](auto dfs, int u) { + auto dfs = [&](auto dfs, int u) -> int { int low = tin[u] = ++q; st[s++] = u; for (int v : g[u]) diff --git a/library/graphs/uncommon/cuts.hpp b/library/graphs/uncommon/cuts.hpp index e1a6a32b8..03cb38894 100644 --- a/library/graphs/uncommon/cuts.hpp +++ b/library/graphs/uncommon/cuts.hpp @@ -19,7 +19,7 @@ auto cuts(const auto& g, int m) { int n = sz(g), num_bccs = 0, q = 0, s = 0; vi bcc_id(m, -1), is_cut(n), tin(n), st(m); - auto dfs = [&](auto dfs, int u, int p) { + auto dfs = [&](auto dfs, int u, int p) -> int { int low = tin[u] = ++q; for (auto [v, e] : g[u]) { assert(u != v); diff --git a/library/trees/centroid_decomp.hpp b/library/trees/centroid_decomp.hpp index 09ed3b482..f42029188 100644 --- a/library/trees/centroid_decomp.hpp +++ b/library/trees/centroid_decomp.hpp @@ -16,7 +16,7 @@ void centroid(auto& g, auto f) { } return 2 * siz[u] >= n ? siz[p] = n - siz[u], u : -1; }; - auto dfs = [&](auto dfs, int u, int p, int n) { + auto dfs = [&](auto dfs, int u, int p, int n) -> void { f(u = ctd(ctd, u, u, n), p); for (int v : g[u]) erase(g[v], u), dfs(dfs, v, u, siz[v]); From 149d35b2b5cac395765cb95cb5e128db13375164 Mon Sep 17 00:00:00 2001 From: Luke Videckis Date: Sun, 12 Apr 2026 16:17:44 -0600 Subject: [PATCH 6/6] add these back too --- library/graphs/uncommon/bridges.hpp | 2 +- library/trees/uncommon/linear_kth_par.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/library/graphs/uncommon/bridges.hpp b/library/graphs/uncommon/bridges.hpp index 207ba08c1..050ebe333 100644 --- a/library/graphs/uncommon/bridges.hpp +++ b/library/graphs/uncommon/bridges.hpp @@ -18,7 +18,7 @@ auto bridges(const auto& g, int m) { int n = sz(g), num_ccs = 0, q = 0, s = 0; vi br_id(n, -1), is_br(m), tin(n), st(n); - auto dfs = [&](auto dfs, int u, int p) { + auto dfs = [&](auto dfs, int u, int p) -> int { int low = tin[u] = ++q; st[s++] = u; for (auto [v, e] : g[u]) diff --git a/library/trees/uncommon/linear_kth_par.hpp b/library/trees/uncommon/linear_kth_par.hpp index 958304bdc..1eebc91c1 100644 --- a/library/trees/uncommon/linear_kth_par.hpp +++ b/library/trees/uncommon/linear_kth_par.hpp @@ -21,7 +21,7 @@ template struct linear_kth_par { jmp[t] = st[max(0, s - KAPPA * (t & -t))]; t++; }; - auto dfs = [&](auto dfs, int u, int p) { + auto dfs = [&](auto dfs, int u, int p) -> void { int& l = leaf[u] = st[d[u]] = u; pos[u] = t; calc(d[u]);