题目大意
给你一颗树,每个结点为黑色或白色。求一条路径,使得路径上距离为奇数的点颜色不同,距离为偶数的点颜色相同,输出这条路径最多能包含多少结点。
思路讲解
容易想到用树形动态规划搭配 dfs
解决。
将结点 1 1 1 设为根节点。设 d p i , 0 dp_{i,0} dpi,0 为以结点 i i i 为根节点的子树中,以 i i i 为起点的美丽路径最多包含多少个结点, d p i , 1 dp_{i,1} dpi,1 为以结点 i i i 为根节点的子树中,经过结点 i i i 却不以结点 i i i 为起点或终点的美丽路径最多包含多少个结点。
将 d p i , 0 dp_{i,0} dpi,0 的初始值设为 1 1 1。我们通过 dfs
搜索结点 i i i 的所有子结点,设当前搜索到的子节点为 j j j