main
黄海 2 years ago
parent 643cda2413
commit ebe2398c66

@ -17,6 +17,8 @@ int mod; // 对 mod 值取模
int pre[N]; // pre[i]:记录i节点的前缀积对mod取模后的值
int suff[N]; // suff[i]:记录i节点的后缀和对mod取模后的值
// 先递归再统计以子填父用儿子们的贡献更新父亲的值。最底层儿子也就是叶子的贡献值是1,也就是只把它染成黑色,对于这个叶子的父亲而言,
// 它统计方案时它认为这个儿子提供的方案数是2因为儿子也可以不染色也就是白色。当然儿子也可以染成黑色所以它理解为2。
void dfs1(int u, int fa) {
f[u] = 1; // 以u为根的子树不管它是不是有子孙节点最起码可以把u染成黑色这样就可以有1种方案
vector<int> son; // 记录u有哪些儿子方便后的计算。不使用链式前向星直接枚举的原因在于前向星只能正序枚举

Loading…
Cancel
Save