Oner 是一名打野(jungler)——这是一个在野区猎杀怪物的角色。鉴于他在野区看到的树木数量,他沉迷于树上查询问题也就不足为奇了。
给你一棵含有 $n$ 个节点的树,以节点 1 为根。每个节点要么包含一只怪物,要么不包含。
你想找到最小的整数 $k$,使得存在 $k$ 条路径满足以下条件:
- 每条路径必须从根节点(节点 1)开始。
- 每个包含怪物的节点必须被包含在至少一条路径中。如果一个节点是路径上的节点之一(包括其端点),则认为它被包含在该路径中。
为了使这个问题更具挑战性,你还需要回答 $q$ 次询问。对于每次询问,给你一个节点 $v$。对于 $v$ 的子树中的每个节点 $w$,其状态都会被翻转——包含怪物的节点变为不包含,不包含怪物的节点变为包含。在每次询问后,你必须在更新后的状态下再次解决原问题。
请注意,询问是累加的,因此每次询问的影响会持续到后续的询问中。
输入格式
每个测试点包含多个测试用例。第一行包含测试用例的数量 $t$ ($1 \le t \le 20\,000$)。接下来是测试用例的描述。
第一行包含一个整数 $n$ ($2 \le n \le 250\,000$) —— 树中的节点数。
下一行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$ ($a_i \in \{0, 1\}$),表示初始状态。如果 $a_i = 1$,则节点 $i$ 包含一只怪物;如果 $a_i = 0$,则不包含。
接下来的 $n - 1$ 行每行包含两个整数 $u$ 和 $v$ ($1 \le u, v \le n, u \neq v$),描述节点 $u$ 和 $v$ 之间的一条边。保证这些边构成一棵树。
下一行包含一个整数 $q$ ($0 \le q \le 250\,000$) —— 询问的数量。
接下来的 $q$ 行每行包含一个整数 $v_i$ ($1 \le v_i \le n$) —— 第 $i$ 次询问给出的节点。
保证所有测试用例中 $n$ 的总和不超过 $250\,000$。
保证所有测试用例中 $q$ 的总和不超过 $250\,000$。
输出格式
输出 $q + 1$ 行。第一行应包含初始状态下的最小路径数 $k$。接下来的每行应包含每次询问后的答案。
样例
输入样例 1
2 7 0 1 0 1 1 0 0 1 6 1 7 7 3 3 2 7 5 5 4 4 2 4 6 7 2 0 1 1 2 2 2 1
输出样例 1
2 1 1 2 3 1 0 1
说明
测试用例 1:
初始状态:怪物在节点 $\{2, 4, 5\}$。我们需要两条路径:$1 \to 7 \to 3 \to 2$ 和 $1 \to 7 \to 5 \to 4$。答案为 2。
在第 1 次询问 ($v = 2$) 后:怪物在节点 $\{4, 5\}$。我们只需要一条路径:$1 \to 7 \to 5 \to 4$。答案为 1。
在第 2 次询问 ($v = 4$) 后:怪物在节点 $\{5\}$。我们只需要一条路径:$1 \to 7 \to 5$。答案为 1。
在第 3 次询问 ($v = 6$) 后:怪物在节点 $\{5, 6\}$。我们需要两条路径:$1 \to 7 \to 5$ 和 $1 \to 6$。答案为 2。
在第 4 次询问 ($v = 7$) 后:怪物在节点 $\{2, 3, 4, 6, 7\}$。我们需要三条路径:$1 \to 6$、$1 \to 7 \to 5 \to 4$ 和 $1 \to 7 \to 3 \to 2$。答案为 3。
下图表示样例输入中的树。
样例输入中的树
测试用例 2:
初始状态:怪物在节点 $\{2\}$。我们需要一条路径:$1 \to 2$。答案为 1。
在第 1 次询问 ($v = 2$) 后:没有怪物。我们需要 0 条路径。答案为 0。
在第 2 次询问 ($v = 1$) 后:怪物在节点 $\{1, 2\}$。我们需要一条路径:$1 \to 2$。答案为 1。