1use crate::{
4 algebra::{Magma, Monoid, Unital},
5 data_structure::RangeMinimumQuery,
6 graph::UndirectedSparseGraph,
7 math::{ConvolveSteps, U64Convolve},
8 tools::{RandomSpec, Xorshift},
9};
10
11#[codesnip::entry("centroid_decomposition")]
12pub use self::centroid_decomposition::ContourQueryRange;
13#[codesnip::entry("tree_generator")]
14pub use self::generator::*;
15#[codesnip::entry("HeavyLightDecomposition")]
16pub use self::heavy_light_decomposition::HeavyLightDecomposition;
17#[codesnip::entry("LevelAncestor")]
18pub use self::level_ancestor::LevelAncestor;
19pub use self::rerooting::ReRooting;
20#[codesnip::entry("StaticTopTree")]
21pub use self::static_top_tree::{Cluster, MonoidCluster, StaticTopTree, StaticTopTreeDp};
22pub use self::tree_center::*;
23pub use self::tree_hash::TreeHasher;
24
25#[cfg_attr(
26 nightly,
27 codesnip::entry(
28 "centroid_decomposition",
29 include("SparseGraph", "NumberTheoreticTransform")
30 )
31)]
32mod centroid_decomposition;
33mod depth;
34#[cfg_attr(
35 nightly,
36 codesnip::entry("EulerTour", include("RangeMinimumQuery", "SparseGraph", "tree_depth"))
37)]
38mod euler_tour;
39#[cfg_attr(
40 nightly,
41 codesnip::entry("tree_generator", include("SparseGraph", "random_generator"))
42)]
43mod generator;
44#[cfg_attr(
45 nightly,
46 codesnip::entry("HeavyLightDecomposition", include("algebra", "SparseGraph"))
47)]
48mod heavy_light_decomposition;
49#[cfg_attr(nightly, codesnip::entry("LevelAncestor", include("SparseGraph")))]
50mod level_ancestor;
51mod rerooting;
52#[cfg_attr(
53 nightly,
54 codesnip::entry("StaticTopTree", include("algebra", "SparseGraph"))
55)]
56mod static_top_tree;
57mod tree_center;
58#[cfg_attr(nightly, codesnip::entry("tree_centroid", include("SparseGraph")))]
59mod tree_centroid;
60mod tree_dp;
61mod tree_hash;
62mod tree_order;