Skip to content

Commit f5ff9d2

Browse files
committed
add assert for par of centroid tree
1 parent 0c9455f commit f5ff9d2

File tree

2 files changed

+22
-97
lines changed

2 files changed

+22
-97
lines changed

tests/library_checker_aizu_tests/cd_asserts.hpp

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,28 @@
22
#include "../../library/trees/centroid_decomp.hpp"
33
void cd_asserts(const vector<vector<int>>& adj) {
44
vector<int> decomp_size(sz(adj), -1);
5+
vector<int> naive_par_decomp(sz(adj), -1);
56
centroid(adj,
6-
[&](const vector<vector<int>>& cd_adj, int cent,
7-
int par_cent) -> void {
8-
assert(decomp_size[cent] == -1);
9-
auto dfs = [&](auto&& self, int u, int p) -> int {
10-
int sub_size = 1;
11-
for (int v : cd_adj[u])
12-
if (v != p) sub_size += self(self, v, u);
13-
return sub_size;
14-
};
15-
decomp_size[cent] = dfs(dfs, cent, -1);
16-
if (par_cent != -1)
17-
assert(1 <= decomp_size[cent] &&
18-
2 * decomp_size[cent] <= decomp_size[par_cent]);
19-
for (int u : cd_adj[cent]) {
20-
int sz_subtree = dfs(dfs, u, cent);
21-
assert(1 <= sz_subtree &&
22-
2 * sz_subtree <= decomp_size[cent]);
23-
}
24-
});
7+
[&](const vector<vector<int>>& cd_adj, int cent,
8+
int par_cent) -> void {
9+
assert(naive_par_decomp[cent] == par_cent);
10+
assert(decomp_size[cent] == -1);
11+
auto dfs = [&](auto&& self, int u, int p) -> int {
12+
naive_par_decomp[u] = cent;
13+
int sub_size = 1;
14+
for (int v : cd_adj[u])
15+
if (v != p) sub_size += self(self, v, u);
16+
return sub_size;
17+
};
18+
decomp_size[cent] = dfs(dfs, cent, -1);
19+
if (par_cent != -1)
20+
assert(1 <= decomp_size[cent] &&
21+
2 * decomp_size[cent] <= decomp_size[par_cent]);
22+
for (int u : cd_adj[cent]) {
23+
int sz_subtree = dfs(dfs, u, cent);
24+
assert(1 <= sz_subtree &&
25+
2 * sz_subtree <= decomp_size[cent]);
26+
}
27+
});
2528
rep(i, 0, sz(adj)) assert(decomp_size[i] >= 1);
2629
}

tests/library_checker_aizu_tests/trees/cd_jump_on_tree.test.cpp

Lines changed: 0 additions & 78 deletions
This file was deleted.

0 commit comments

Comments
 (0)