ABC235H Painting Weighted Graph
Description
给定一个
你可以在这张图上进行不超过
- 选择一个点
和一个整数 。 - 将所有从点
出发,只经过边权不大于 的边 能到达的所有点 染红。
设所有被染红的点构成的点集为
答案对
Sol
看到“边权不大于”想到Kruskal重构树。建出重构树后,问题转化为:
在树上选取
个关键点并将子树中的所有叶结点染色,求能得到多少种不同的树。
考虑经典树上背包。
转移:
但是这个 DP 有一些小问题:
- 如果两个树上的非叶节点边权相同,那么就会算重。
- 解决方案:建树时合并边权相同的结点。
- 子树全选的方案和只选子树根的方案重复,且没有只选子树根的方案。
- 解决方案:计算完毕后
。
- 解决方案:计算完毕后
时间复杂度
Code
我太菜了,咕咕咕。