diff --git a/.verify-helper/timestamps.remote.json b/.verify-helper/timestamps.remote.json index 95dce9fb..b04fd62b 100644 --- a/.verify-helper/timestamps.remote.json +++ b/.verify-helper/timestamps.remote.json @@ -132,9 +132,6 @@ "tests/library_checker_aizu_tests/trees/edge_cd_count_paths_per_length.test.cpp": "2025-08-06 13:48:07 -0600", "tests/library_checker_aizu_tests/trees/edge_cd_reroot_dp.test.cpp": "2025-04-27 21:47:37 -0600", "tests/library_checker_aizu_tests/trees/kth_path_ladder.test.cpp": "2025-08-06 12:42:13 -0600", -"tests/library_checker_aizu_tests/trees/kth_path_linear.test.cpp": "2025-08-06 12:42:13 -0600", "tests/library_checker_aizu_tests/trees/kth_path_tree_lift.test.cpp": "2025-08-06 12:42:13 -0600", -"tests/library_checker_aizu_tests/trees/lca_all_methods_aizu.test.cpp": "2025-08-06 12:42:13 -0600", -"tests/library_checker_aizu_tests/trees/lca_all_methods_lib_checker.test.cpp": "2025-08-06 12:42:13 -0600", "tests/library_checker_aizu_tests/trees/subtree_isomorphism.test.cpp": "2025-08-06 12:42:13 -0600" } \ No newline at end of file diff --git a/library/graphs/dijkstra.hpp b/library/graphs/dijkstra.hpp index b9995eb2..c5c4ec40 100644 --- a/library/graphs/dijkstra.hpp +++ b/library/graphs/dijkstra.hpp @@ -1,9 +1,5 @@ #pragma once //! @code -//! { -//! vector>> adj(n); -//! auto d = dijkstra(adj, source); -//! } //! vector>> adj(n); //! auto d = dijkstra(adj, source); //! @endcode diff --git a/library/graphs/hopcroft_karp.hpp b/library/graphs/hopcroft_karp.hpp index 8b63b7e0..9d504347 100644 --- a/library/graphs/hopcroft_karp.hpp +++ b/library/graphs/hopcroft_karp.hpp @@ -1,14 +1,9 @@ #pragma once //! https://github.com/foreverbell/acm-icpc-cheat-sheet/blob/master/src/graph-algorithm/hopcroft-karp.cpp //! @code -//! { -//! vector adj(lsz); -//! auto [matching_size, to_r, to_l, -//! mvc_l, mvc_r] = hopcroft_karp(adj, rsz); -//! } //! vector> adj(lsz); //! adj[l] += r; // add edge l <-> r -//! // 0<=l adj(n); -//! auto [num_sccs, scc_id] = sccs(adj); -//! } //! vector> adj(n); //! auto [num_sccs, scc_id] = sccs(adj); //! @endcode diff --git a/library/graphs/uncommon/block_vertex_tree.hpp b/library/graphs/uncommon/block_vertex_tree.hpp index 5a027e4f..e69b839f 100644 --- a/library/graphs/uncommon/block_vertex_tree.hpp +++ b/library/graphs/uncommon/block_vertex_tree.hpp @@ -1,12 +1,6 @@ #pragma once #include "cuts.hpp" //! @code -//! { -//! vector> adj(n); -//! auto [num_bccs, bcc_id, is_cut] = cuts(adj, m); -//! auto bvt = block_vertex_tree(adj, -//! num_bccs, bcc_id); -//! } //! vector>> adj(n); //! auto [num_bccs, bcc_id, is_cut] = cuts(adj, m); //! auto bvt = block_vertex_tree(adj, num_bccs, bcc_id); diff --git a/library/graphs/uncommon/bridge_tree.hpp b/library/graphs/uncommon/bridge_tree.hpp index e1c1f887..3386ef3e 100644 --- a/library/graphs/uncommon/bridge_tree.hpp +++ b/library/graphs/uncommon/bridge_tree.hpp @@ -1,11 +1,6 @@ #pragma once #include "bridges.hpp" //! @code -//! { -//! vector> adj(n); -//! auto [num_ccs, br_id, is_br] = bridges(adj, m); -//! auto bt = bridge_tree(adj, num_ccs, br_id, is_br); -//! } //! vector>> adj(n); //! auto [num_ccs, br_id, is_br] = bridges(adj, m); //! auto bt = bridge_tree(adj, num_ccs, br_id, is_br); diff --git a/library/graphs/uncommon/bridges.hpp b/library/graphs/uncommon/bridges.hpp index 5d1093d8..5b2ddcb5 100644 --- a/library/graphs/uncommon/bridges.hpp +++ b/library/graphs/uncommon/bridges.hpp @@ -1,10 +1,6 @@ #pragma once //! https://cp-algorithms.com/graph/bridge-searching.html //! @code -//! { -//! vector> adj(n); -//! auto [num_ccs, br_id, is_br] = bridges(adj, m); -//! } //! vector>> adj(n); //! rep (i, 0, m) { //! int u, v; diff --git a/library/graphs/uncommon/complement_graph_ccs.hpp b/library/graphs/uncommon/complement_graph_ccs.hpp index 79c0aba7..864a8de7 100644 --- a/library/graphs/uncommon/complement_graph_ccs.hpp +++ b/library/graphs/uncommon/complement_graph_ccs.hpp @@ -1,9 +1,5 @@ #pragma once //! @code -//! { -//! vector adj(n); -//! vi cc_id = get_complement_graph_ccs(adj); -//! } //! vector> adj; //! vi cc_id = get_complement_graph_ccs(adj); //! @endcode diff --git a/library/graphs/uncommon/cuts.hpp b/library/graphs/uncommon/cuts.hpp index 0a636e06..1f7068a0 100644 --- a/library/graphs/uncommon/cuts.hpp +++ b/library/graphs/uncommon/cuts.hpp @@ -1,10 +1,6 @@ #pragma once //! https://cp-algorithms.com/graph/cutpoints.html //! @code -//! { -//! vector> adj(n); -//! auto [num_bccs, bcc_id, is_cut] = cuts(adj, m); -//! } //! vector>> adj(n); //! rep (i, 0, m) { //! int u, v; diff --git a/library/trees/centroid_decomp.hpp b/library/trees/centroid_decomp.hpp index 2429168e..3cd5d12d 100644 --- a/library/trees/centroid_decomp.hpp +++ b/library/trees/centroid_decomp.hpp @@ -1,11 +1,5 @@ #pragma once //! @code -//! { -//! vector adj(n); -//! centroid(adj, [&](const auto& adj, -//! int cent, int par_cent) { -//! }); -//! } //! vector> adj(n); //! centroid(adj, [&](const auto& adj, //! int cent, int par_cent) {}); diff --git a/library/trees/edge_cd.hpp b/library/trees/edge_cd.hpp index b327f938..e3ec20cd 100644 --- a/library/trees/edge_cd.hpp +++ b/library/trees/edge_cd.hpp @@ -4,11 +4,6 @@ //! https://codeforces.com/blog/entry/142176 //! https://youtu.be/wDwaMo5xa-k //! @code -//! { -//! vector adj(n); -//! edge_cd(adj, [&](const auto& adj, -//! int cent, int m) {}); -//! } //! vector> adj(n); //! edge_cd(adj, [&](const auto& adj, int cent, int m) { //! // subtrees of [0, m) of adj[cent]: 1st edge-set diff --git a/library/trees/lca_rmq.hpp b/library/trees/lca_rmq.hpp index def6c02c..5db4bd4b 100644 --- a/library/trees/lca_rmq.hpp +++ b/library/trees/lca_rmq.hpp @@ -3,10 +3,6 @@ #include "../data_structures/rmq.hpp" //! https://github.com/kth-competitive-programming/kactl/blob/main/content/graph/LCA.h //! @code -//! { -//! vector adj(n); -//! LCA lca(adj); -//! } //! vector> adj(n); //! LCA lca(adj); //! @endcode diff --git a/library/trees/linear_kth_par.hpp b/library/trees/linear_kth_par.hpp index 5b8020ec..06da2df8 100644 --- a/library/trees/linear_kth_par.hpp +++ b/library/trees/linear_kth_par.hpp @@ -1,10 +1,6 @@ #pragma once //! https://codeforces.com/blog/entry/126580 //! @code -//! { -//! vector adj(n); -//! linear_kth_par kp(adj); -//! } //! vector> adj(n); //! linear_kth_par kp(adj); //! kp.kth_par(v, k); // k edges up from v diff --git a/library/trees/linear_lca.hpp b/library/trees/linear_lca.hpp index 01b0c029..e13aa92d 100644 --- a/library/trees/linear_lca.hpp +++ b/library/trees/linear_lca.hpp @@ -1,10 +1,6 @@ #pragma once //! https://codeforces.com/blog/entry/125371 //! @code -//! { -//! vector adj(n); -//! linear_lca llca(adj); -//! } //! vector> adj(n); //! linear_lca llca(adj); //! @endcode diff --git a/library/trees/tree_lift.hpp b/library/trees/tree_lift.hpp index fa0b10d2..3a6e574b 100644 --- a/library/trees/tree_lift.hpp +++ b/library/trees/tree_lift.hpp @@ -1,13 +1,10 @@ #pragma once //! https://github.com/ucf-programming-team/hackpack-cpp/blob/master/content/graphs/TreeLifting.h //! @code -//! { -//! vector adj(n); -//! tree_lift tree_l(adj); -//! } //! vector> adj(n); //! tree_lift tree_l(adj); //! tree_l.kth_par(v, k); // k edges up from v +//! tree_l.kth_par(v, 1); // v's parent //! @endcode //! @time O(n + q log n) //! @space O(n) diff --git a/library/trees/uncommon/subtree_isomorphism.hpp b/library/trees/uncommon/subtree_isomorphism.hpp index 708604a4..784421f3 100644 --- a/library/trees/uncommon/subtree_isomorphism.hpp +++ b/library/trees/uncommon/subtree_isomorphism.hpp @@ -1,10 +1,5 @@ #pragma once //! @code -//! { -//! vector adj(n); -//! auto [num_distinct_subtrees, iso_id] = -//! subtree_iso(adj); -//! } //! vector> adj(n); //! auto [num_distinct_subtrees, iso_id] = //! subtree_iso(adj); diff --git a/tests/library_checker_aizu_tests/graphs/bcc_callback_aizu_bcc.test.cpp b/tests/library_checker_aizu_tests/graphs/bcc_callback_aizu_bcc.test.cpp index 06c22f00..02d52421 100644 --- a/tests/library_checker_aizu_tests/graphs/bcc_callback_aizu_bcc.test.cpp +++ b/tests/library_checker_aizu_tests/graphs/bcc_callback_aizu_bcc.test.cpp @@ -6,13 +6,13 @@ int main() { cin.tie(0)->sync_with_stdio(0); int n, m; cin >> n >> m; - vector> adj(n); - for (int i = 0; i < n; i++) adj[i] += i; + vector> adj(n); + for (int i = 0; i < n; i++) adj[i].push_back(i); for (int i = 0; i < m; i++) { int u, v; cin >> u >> v; - adj[u] += v; - adj[v] += u; + adj[u].push_back(v); + adj[v].push_back(u); } vi cnt(n); bcc_callback(adj, [&](const vi& nodes) { diff --git a/tests/library_checker_aizu_tests/graphs/bcc_callback_aizu_two_edge_cc.test.cpp b/tests/library_checker_aizu_tests/graphs/bcc_callback_aizu_two_edge_cc.test.cpp index 290a3f35..94e5ae3c 100644 --- a/tests/library_checker_aizu_tests/graphs/bcc_callback_aizu_two_edge_cc.test.cpp +++ b/tests/library_checker_aizu_tests/graphs/bcc_callback_aizu_two_edge_cc.test.cpp @@ -6,13 +6,13 @@ int main() { cin.tie(0)->sync_with_stdio(0); int n, m; cin >> n >> m; - vector> adj(n); - for (int i = 0; i < n; i++) adj[i] += i; + vector adj(n); + for (int i = 0; i < n; i++) adj[i].push_back(i); for (int i = 0; i < m; i++) { int u, v; cin >> u >> v; - adj[u] += v; - adj[v] += u; + adj[u].push_back(v); + adj[v].push_back(u); } vector bridges; bcc_callback(adj, [&](const vi& nodes) { diff --git a/tests/library_checker_aizu_tests/graphs/bcc_callback_lib_checker_bcc.test.cpp b/tests/library_checker_aizu_tests/graphs/bcc_callback_lib_checker_bcc.test.cpp index bfeb9dd6..52771ee3 100644 --- a/tests/library_checker_aizu_tests/graphs/bcc_callback_lib_checker_bcc.test.cpp +++ b/tests/library_checker_aizu_tests/graphs/bcc_callback_lib_checker_bcc.test.cpp @@ -6,13 +6,13 @@ int main() { cin.tie(0)->sync_with_stdio(0); int n, m; cin >> n >> m; - vector> adj(n); - for (int i = 0; i < n; i++) adj[i] += i; + vector> adj(n); + for (int i = 0; i < n; i++) adj[i].push_back(i); for (int i = 0; i < m; i++) { int u, v; cin >> u >> v; - adj[u] += v; - adj[v] += u; + adj[u].push_back(v); + adj[v].push_back(u); } vector vis(n, 0); vector> all_bccs; diff --git a/tests/library_checker_aizu_tests/graphs/bcc_callback_lib_checker_two_cc.test.cpp b/tests/library_checker_aizu_tests/graphs/bcc_callback_lib_checker_two_cc.test.cpp index 7038e7b2..061b302f 100644 --- a/tests/library_checker_aizu_tests/graphs/bcc_callback_lib_checker_two_cc.test.cpp +++ b/tests/library_checker_aizu_tests/graphs/bcc_callback_lib_checker_two_cc.test.cpp @@ -7,12 +7,12 @@ int main() { cin.tie(0)->sync_with_stdio(0); int n, m; cin >> n >> m; - vector> adj(n); + vector adj(n); for (int i = 0; i < m; i++) { int u, v; cin >> u >> v; - adj[u] += v; - adj[v] += u; + adj[u].push_back(v); + adj[v].push_back(u); } UF uf(n); vector seen(n); @@ -30,8 +30,8 @@ int main() { } for (int v : nodes) uf.join(v, nodes[0]); }); - vector> two_edge_ccs(n); - rep(i, 0, n) two_edge_ccs[uf.find(i)] += i; + vector two_edge_ccs(n); + rep(i, 0, n) two_edge_ccs[uf.find(i)].push_back(i); int cnt_ccs = 0; rep(i, 0, n) cnt_ccs += (!empty(two_edge_ccs[i])); cout << cnt_ccs << '\n'; diff --git a/tests/library_checker_aizu_tests/trees/edge_cd_reroot_dp.test.cpp b/tests/library_checker_aizu_tests/trees/edge_cd_reroot_dp.test.cpp index 382ca988..8334678c 100644 --- a/tests/library_checker_aizu_tests/trees/edge_cd_reroot_dp.test.cpp +++ b/tests/library_checker_aizu_tests/trees/edge_cd_reroot_dp.test.cpp @@ -14,7 +14,7 @@ int main() { cin >> a[i]; res[i] = a[i]; } - vector> adj(n); + vector adj(n); vector b(n - 1), c(n - 1); vector> par(n, {-1, -1}); vector> base_adj(n); @@ -47,7 +47,7 @@ int main() { }; { edge_cd(base_adj, edge_cd_asserts); } edge_cd(adj, - [&](const vector>& cd_adj, int cent, + [&](const vector& cd_adj, int cent, int split) -> void { array>, 2> all_backwards; array sum_forward = {0, 0}; diff --git a/tests/scripts/grep_clangformat_cppcheck.sh b/tests/scripts/grep_clangformat_cppcheck.sh index 631f9d27..56c9863f 100755 --- a/tests/scripts/grep_clangformat_cppcheck.sh +++ b/tests/scripts/grep_clangformat_cppcheck.sh @@ -32,6 +32,9 @@ grep "ssize" --recursive ../library/ && exit 1 echo "check vi instead of vector" grep "vector" --recursive ../library/**/*.hpp && exit 1 +echo "check no basic_string, excluding @code example inits" +grep "[[:space:]]*//\!" --recursive --invert-match ../library/**/*.hpp library_checker_aizu_tests/**/*.test.cpp | grep "basic_string" && exit 1 + echo "check begin(arr) instead of arr.begin(), similarly for end, rbegin, rend, empty, size:" # TODO: remove this define filter if/when we move to -std=c++20 grep --invert-match --fixed-strings "#define" --recursive ../library/ library_checker_aizu_tests/ |