Skip to content

Commit e7de6ce

Browse files
committed
fix another test
1 parent f4cf9cc commit e7de6ce

File tree

3 files changed

+17
-25
lines changed

3 files changed

+17
-25
lines changed

library/trees/centroid_decomp.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ template<class F, class G> struct centroid {
1818
vi siz;
1919
centroid(const G& adj, F f):
2020
adj(adj), f(f), siz(sz(adj), -1) {
21-
rep(i, 0, sz(adj)) if (siz[i] == -1) dfs(i, -1);
21+
dfs(0, -1);
2222
}
2323
void calc_sz(int v, int p) {
2424
siz[v] = 1;

tests/library_checker_aizu_tests/handmade_tests/count_paths_forest.test.cpp

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,43 +3,35 @@
33
#include "../template.hpp"
44
#include "../../../library/contest/random.hpp"
55
#include "../../../library/trees/centroid_decomp_uncommon/count_paths_per_node.hpp"
6-
#include "../../../library/data_structures/dsu/dsu_restorable.hpp"
7-
#include "../../../library/trees/tree_lift/tree_lift.hpp"
6+
#include "../../../library/trees/lca_rmq/lca_rmq.hpp"
87
#include "../../../library/trees/centroid_decomp_uncommon/count_paths_per_length.hpp"
98
#include "../cd_asserts.hpp"
10-
vector<vector<ll>> naive(const vector<vector<int>>& adj,
11-
dsu_restorable& dsu) {
12-
tree_lift tl(adj);
9+
vector<vector<ll>> naive(const vector<vi>& adj) {
10+
LCA lc(adj);
1311
int n = sz(adj);
1412
vector<vector<ll>> cnts_naive(n + 1, vector<ll>(n, 0));
1513
for (int u = 0; u < n; u++) {
1614
for (int v = u; v < n; v++) {
17-
if (dsu.same_set(u, v)) {
18-
int path_length_edges = tl.dist_edges(u, v);
19-
for (int i = 0; i <= path_length_edges; i++)
20-
cnts_naive[path_length_edges]
21-
[tl.kth_path(u, v, i)]++;
22-
}
15+
int path_length_edges = lc.dist(u, v);
16+
for (int node = u; node != v;
17+
node = lc.next_on_path(node, v))
18+
cnts_naive[path_length_edges][node]++;
19+
cnts_naive[path_length_edges][v]++;
2320
}
2421
}
2522
return cnts_naive;
2623
}
2724
int main() {
2825
cin.tie(0)->sync_with_stdio(0);
2926
for (int n = 1; n <= 100; n++) {
30-
vector<vector<int>> adj(n);
31-
dsu_restorable dsu(n);
32-
for (int i = 0; i < n - 2; i++) {
33-
int u = rnd<int>(0, n - 1);
34-
int v = rnd<int>(0, n - 1);
35-
if (u == v) continue;
36-
if (dsu.join(u, v)) {
37-
adj[u].push_back(v);
38-
adj[v].push_back(u);
39-
}
27+
vector<vi> adj(n);
28+
for (int i = 1; i < n; i++) {
29+
int par = rnd<int>(0, i - 1);
30+
adj[par].push_back(i);
31+
adj[i].push_back(par);
4032
}
4133
cd_asserts(adj);
42-
vector<vector<ll>> cnts_naive = naive(adj, dsu);
34+
vector<vector<ll>> cnts_naive = naive(adj);
4335
for (int k = 1; k <= n; k++)
4436
assert(
4537
count_paths_per_node(adj, k) == cnts_naive[k]);

tests/library_checker_aizu_tests/trees/lca_all_methods_aizu.test.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ int main() {
2525
assert(tl.lca(i, i) == i);
2626
assert(lc.lca(i, i) == i);
2727
assert(lin_lca.lca(i, i) == i);
28-
assert(lc.t[lc.rmq.dp[0][i]].in == i &&
29-
lc.rmq.dp[0][lc.t[i].in] == i);
28+
assert(lc.in[lc.rmq.dp[0][i]] == i &&
29+
lc.rmq.dp[0][lc.in[i]] == i);
3030
}
3131
int q;
3232
cin >> q;

0 commit comments

Comments
 (0)