CF1975E.Chain Queries
提高+/省选-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一棵有 n 个顶点的树,顶点编号为 1 到 n。初始时,每个顶点被染成白色或黑色。
你需要进行 q 次操作:
- “u” —— 翻转顶点 u 的颜色(如果原来是白色,则变为黑色;如果原来是黑色,则变为白色)。
每次操作后,你需要回答所有黑色顶点是否构成一条链。也就是说,是否存在两个黑色顶点,使得它们之间的简单路径经过且仅经过所有黑色顶点。特别地,如果只有一个黑色顶点,也视为构成一条链。如果没有黑色顶点,则不构成链。
输入格式
每个测试点包含多组测试用例。第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。
每个测试用例的第一行包含两个整数 n 和 q(1≤n,q≤2⋅105)。
第二行包含 n 个整数 c1,c2,…,cn(ci∈{0,1}),表示每个顶点的初始颜色。ci 表示顶点 i 的颜色,0 表示白色,1 表示黑色。
接下来 n−1 行,每行包含两个整数 xi 和 yi(1≤xi,yi≤n),表示在顶点 xi 和 yi 之间有一条边。保证这些边构成一棵树。
接下来的 q 行,每行包含一个整数 ui(1≤ui≤n),表示需要翻转顶点 ui 的颜色。
保证所有测试用例中 n 和 q 的总和分别不超过 2⋅105。
输出格式
对于每次操作,如果黑色顶点构成一条链,输出 “Yes”;否则输出 “No”。
你可以用任意大小写组合输出 “Yes” 和 “No”(例如 "yEs"、"yes"、"Yes"、"YES" 都被认为是肯定回答)。
输入输出样例
输入#1
2 2 1 1 0 1 2 1 5 4 1 0 0 0 0 1 2 1 3 1 5 3 4 4 3 2 5
输出#1
No No Yes Yes No
输入#2
4 5 3 1 1 1 1 1 3 5 2 5 3 4 1 5 1 1 1 4 4 0 0 0 0 1 2 2 3 1 4 1 2 3 2 1 1 1 1 1 1 0 1
输出#2
Yes No Yes Yes Yes Yes No No Yes
说明/提示
在第二个测试用例中,顶点的颜色变化如下:
初始树:

第一次操作翻转顶点 4 的颜色:

第二次操作翻转顶点 3 的颜色:

第三次操作翻转顶点 2 的颜色:

第四次操作翻转顶点 5 的颜色:

由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?