1use crate::{
4 algebra::Monoid,
5 graph::UndirectedSparseGraph,
6 math::{ConvolveSteps, U64Convolve},
7 tools::{RandomSpec, Xorshift},
8};
9
10pub use self::euler_tour::*;
11#[codesnip::entry("tree_generator")]
12pub use self::generator::*;
13#[codesnip::entry("HeavyLightDecomposition")]
14pub use self::heavy_light_decomposition::HeavyLightDecomposition;
15pub use self::rerooting::ReRooting;
16pub use self::tree_center::*;
17pub use self::tree_hash::TreeHasher;
18
19#[cfg_attr(
20 nightly,
21 codesnip::entry(
22 "centroid_decomposition",
23 include("SparseGraph", "NumberTheoreticTransform")
24 )
25)]
26mod centroid_decomposition;
27mod depth;
28mod euler_tour;
29#[cfg_attr(
30 nightly,
31 codesnip::entry("tree_generator", include("SparseGraph", "random_generator"))
32)]
33mod generator;
34#[cfg_attr(
35 nightly,
36 codesnip::entry("HeavyLightDecomposition", include("algebra", "SparseGraph"))
37)]
38mod heavy_light_decomposition;
39mod rerooting;
40mod tree_center;
41#[cfg_attr(nightly, codesnip::entry("tree_centroid", include("SparseGraph")))]
42mod tree_centroid;
43mod tree_dp;
44mod tree_hash;
45mod tree_order;