CF1442E Black, White and Grey Tree

题目描述

给定一棵树,每个顶点被染成白色、黑色或灰色。你可以通过选择树中某个连通块的顶点子集,并将这些顶点及其相邻的边从图中移除来删除元素。唯一的限制是,不能选择同时包含白色和黑色顶点的子集。 问最少需要多少次操作才能移除树中的所有顶点。

输入格式

每个测试点包含多个测试用例。第一行包含一个整数 $t$($1 \le t \le 100\,000$),表示测试用例的数量,接下来是每个测试用例的描述。 每个测试用例的第一行包含一个整数 $n$($1 \le n \le 200\,000$),表示树的顶点数。 第二行包含 $n$ 个整数 $a_v$($0 \le a_v \le 2$),表示每个顶点的颜色。灰色顶点 $a_v=0$,白色顶点 $a_v=1$,黑色顶点 $a_v=2$。 接下来的 $n-1$ 行,每行包含两个整数 $u, v$($1 \le u, v \le n$),表示树中的一条边。 所有测试用例中 $n$ 的总和不超过 $200\,000$。

输出格式

对于每个测试用例,输出一个整数,表示移除所有顶点所需的最小操作次数。

说明/提示

![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1442E/5c7fc65a67c993efea0c5b8d456685a03459e620.png) 在第一个测试用例中,两个顶点都是白色,可以同时移除。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1442E/7fcb0fe30316c209a4dd5c5ea57299d9714ea871.png) 在第二个测试用例中,三次操作就足够了。首先移除两个黑色顶点(2 和 4),然后分别移除顶点 1 和 3。不能一起移除,因为在移除顶点 2 后它们处于不同的连通分量。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1442E/a704bd67a9d5c0bd1cf54c65c7d130fa609e7e75.png) 在第三个测试用例中,可以同时移除顶点 1、2、3、4,因为它们中有三个是白色,一个是灰色。之后再移除顶点 5。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1442E/67b7bb063d112a8f54a5b9ef736683e86b82ea81.png) 在第四个测试用例中,三次操作就足够了。一种做法是先一次性移除所有黑色顶点,然后移除白色顶点 7,最后移除连通的白色顶点 1 和 3。 由 ChatGPT 4.1 翻译