ARC097D Monochrome Cat
题意:给出一棵
以任意节点开始操作,每轮操作可以选择是否移动到相邻节点,然后将当前所在的节点颜色取反。
求使所有点变为黑色的最小操作次数。
首先,显然只用保留全体白色点的虚树。
然后,必须要将这颗树完整遍历一次,但经过每个点的次数随着起止点的选取而变化,不便分析。
不妨先考虑回路,这样,每条边都会被正反各走一次,每个点都恰会被经过度数次。
这样走过之后,标记树上剩余的白点,只需要在此处停留一步就能将其变为黑点。
回路的问题已经解决了,现在考虑起止点的选择。假设选择
对于没有标记的点,少经过一次,所以需要停留一回合,没有贡献。
对于有标记的点,少经过一次,所以不需要再停留,贡献为
。
所以,选择一条标记点最多的路径即可。
注意,
只要有多个白点,叶节点处的白点肯定不是标记点,选出的路径必然可以以两个无标记叶节点为端点。这样,端点在不在路径内就无关紧要了。
最终答案为
复杂度