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 5bb6d150..1e2e013f 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 268bdd80..f2646f77 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 e0ab350f..127e192e 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 586def98..07027b4e 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 fc2673cf..f2bdc878 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 01dc54b6..e838ff4f 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 ae03effe..9d9514e7 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 01d5f786..050ebe33 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 8986ae2b..03cb3889 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 fcab906f..4c6efe90 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 577c5f0c..65263ba5 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 1b87f7ef..ea3bc660 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 7da346b2..779439ad 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 bb35d2c0..6cd0f46d 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 22dfb4be..d7ea4873 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 3e8844ff..7dede21c 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 8801a3c0..1eebc91c 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 708941d8..2c81cd50 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 1e2e013f..9253c93c 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 f2646f77..967c6061 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 127e192e..db0b39e3 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 07027b4e..0d9c9682 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 f2bdc878..46dcd9ea 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 050ebe33..207ba08c 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 03cb3889..e1a6a32b 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 4c6efe90..245baf3d 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 65263ba5..feebeb10 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 ea3bc660..aea22e13 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 779439ad..5c792f6c 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 6cd0f46d..1cb412e2 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 d7ea4873..bfda5afd 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 7dede21c..b5af40ca 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 1eebc91c..958304bd 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 2c81cd50..0d4adae7 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 f4202918..37b99f26 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 37b99f26..09ed3b48 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 245baf3d..b8be23d5 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 feebeb10..65263ba5 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 aea22e13..ea3bc660 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 5c792f6c..779439ad 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 1cb412e2..6cd0f46d 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 bfda5afd..d7ea4873 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 b5af40ca..7dede21c 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 0d4adae7..2c81cd50 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 967c6061..f2646f77 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 db0b39e3..127e192e 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 0d9c9682..07027b4e 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 46dcd9ea..f2bdc878 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 e1a6a32b..03cb3889 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 09ed3b48..f4202918 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 207ba08c..050ebe33 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 958304bd..1eebc91c 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]);