计算所有节点数值的总和 S。
如果 S 是奇数,那么无论怎么切断边,所有连通块的和加起来一定是奇数。但每个连通块的和都是偶数时,它们的总和一定是偶数,矛盾。因此这种情况下不存在任何合法的方案,对于所有的 k=1,2,…,n−1,答案均为 0。
如果 S 是偶数,则可以通过一次深度优先搜索(DFS)找出所有 可以切断的边。
在一个由 n 个节点和 n−1 条边组成的无向连通无环图中,每个节点上都有一个整数值。现在需要切断其中的若干条边,将图分割成若干个连通块,要求每一个连通块内所有节点数值之和均为偶数。
对于每个 k(1≤k≤n−1),请你计算恰好切断 k 条边后,能使得所有连通块满足上述要求的方案总数。若无法达成,则对应的答案记为 0。两种方案只要切断的边集合不同,即视为不同方案。
由于答案可能非常大,请将所有答案对 109+7 取模后输出。
约束:节点数量 n 满足 2≤n≤105,每个节点上的整数值的绝对值均不超过 109。输入的边保证构成一个连通且不存在环路的图。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.