这里的状态定义的非常的巧妙,d(i, 1)表示以i为根节点且选i的子树的最大独立子集 d(i, 0)表示以i为根节点且不选i的子树的最大独立子集 d(i, 1) = sum{ d(v, 0) | v是i的儿子} d(i, 0) = sum{ max(d(v, 0), d(v, 1)) | v是i的儿子} 答案为 max(d(0, 0), d(0, 1)) 至于唯不唯一,很好推,当子树中有一个是不唯一的,那么当前节点就不唯一,或者有两个子树答案是一样的,也是不唯一的. #include<cstdi…