[COCI2020-2021#2] Svjetlo

题目描述

有一个呈树状结构的吊灯,由 $n$ 个灯泡组成,这些灯泡之间有 $n-1$ 根电线连接。每个灯泡有一个按钮,能使灯泡的状态发生改变,即把打开的灯泡关闭,关闭的灯泡打开。你需要把所有的灯泡打开。 你可以选择一个序列,序列中两两相邻位置的灯泡相邻,灯泡可以在序列中出现多次。你可以依次改变序列中的灯泡的状态。 你需要计算出最短的符合题目要求的灯泡序列。保证至少有一个灯泡在开始时处于关闭状态。

输入输出格式

输入格式


第一行一个整数 $n$,表示灯泡的数量。 第二行一个长为 $n$ 的 01 序列,表示灯泡的状态,其中“0”代表关闭,“1”代表打开。 接下来 $n - 1$ 行每行两个整数 $x, y$,表示 $x$ 与 $y$ 之间有边。

输出格式


输出序列的最小长度。可以证明这样的序列一定存在。

输入输出样例

输入样例 #1

3
010
1 2
2 3

输出样例 #1

4

输入样例 #2

5
00000
1 2
2 3
2 4
3 5

输出样例 #2

7

输入样例 #3

5
00100
1 2
2 3
2 4
3 5

输出样例 #3

8

说明

**【样例解释 #1】** 序列可以为 $1, 2, 3, 2$。 **【数据范围】** 对于 $100\%$ 的数据,$2 \leq n \leq 500,000$。 Subtask #1($19$ pts):$n \leq 100$。 Subtask #2($27$ pts):每个灯泡最多与两个灯泡相连。 Subtask #3($27$ pts):一开始所有灯泡均处于关闭状态。 Subtask #4($27$ pts):无附加限制。 #### 说明 译自 [Croatian Open Competition in Informatics 2020 ~ 2021 Round 2 E Svjetlo](https://hsin.hr/coci/contest2_tasks.pdf)。