题目分析
由题目可以知道,本题让我们求的就是每条边上需要至少一个节点被染色的最少代价。
在明白题目意思后,我们先要思考如何存储这颗树,这里我使用 结构体 和 vector 进行存储,友情提示,本题的存入不建议按题目所说去存储其节点的父节点,而是建议存为父节点的子节点的形式方便后续使用算法来求出结果。
接下来我们由题目数据范围可推算出使用 dfs 或者 模拟 不会超出时间范围,再次我是用的是 dfs ,具体过程见代码
总结一下,这道题的核心逻辑就是:深搜找子节点,所以存树要按节点存子节点的方式存储 ;算代价时,每个节点选自己染色或所有子节点染色中代价少的方案,最终从根节点得到整棵树的最小花费。
代码