LINK:Kingdom and its Cities
发现是一个树上关键点问题 所以考虑虚树刚好也有标志\(\sum k\leq 100000\)即关键点总数的限制。
首先当k==1时 答案显然为0。
然后考虑无解情况 容易发现这种情况是两个点同时为关键点 那么我们只需要判断是否存在两个点相连的情况就好了。
这个可以在建立虚树时候判断 我多此一举了 直接标记父亲然后判断父亲是否存在。
接下来考虑如何统计答案。
可以从下往上观察 在某个点处统计儿子们的贡献。
假设儿子都是关键点 考虑当前点是否是关键点 如果是 显然都得断开一遍。且向上传递的时候这个点是关键点。
如果当前不是 那么如果有>1个儿子 那么在当前断开显然是比较优的且向上传递的时候这个点不是关键点、
如果只有一个儿子 可以在当前断开 不过更优的是可以去上面断开这个结果不会更差。
其实就这三种情况(类似dp 可以发现第一个决策时固定的 第二个决策是最优的 第三个决策根据不会更差的那套理论 可以发现也是最优的。
注意特判 有效儿子为0的情况.
code
//#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include