黑白翻转 题面描述 小杨有一颗包含n个节点的树,这棵树上的任意一个节点要么是白色,要么是黑色。小杨认为一棵树是美丽当且仅当在删除所有白色节点之后,剩余节点仍然组成一棵树。 小杨每次操作可以选择一个白色节点将它的颜色变成黑色,他想知道自己最少要执行多少次操作可以使得这棵树变成美丽树。 输入格式 第一行包含一个正整数n,代表树的节点数。 第二行包含n个非负整数a1,a2,...,an,其中如果ai=0,则节点i的颜色为白色,否则为黑色。 之后n-1行,每行包含两个正整数xi,yi,代表存在一条连接节点xi和yi的边。 输出格式 输出一个整数,代表最少执行的操作次数。 样例 1 样例解释 将节点1和3变为黑色即可使这棵树变为美丽树,此时删除白色节点5,剩余黑色节点仍然组成一棵树。 数据范围


正确答案:删白后剩余黑节点须连通(原是树,即黑集诱导子图为树)。只能白转黑。求所有原黑节点的最小连通子树(虚树),其中原本为白的节点数即答案。实现:DFS求子树黑点数,统计路径并上白节点数。
试卷来源:202406 CCF-GESP编程能力等级认证C++七级真题