2211. 下雨收衣服(30分)

Y村有 nn 间屋子和 n1n-1 条道路,并且任意屋子之间两两连通。

由于很多村民下雨天忘记收衣服导致衣服是湿的。

小w有一个神奇的机器,它会在小w走进一间屋子时自动激活(初始屋子不算),变化屋内衣服的状态:从干变成湿或者从湿变成干。

现在小w在 1 号房屋,他希望你帮他规划一条路径,从一号点出发然后使得他按照这条路径遍历房屋之后所有屋子的衣服都是干的。

一条长度为 kk 的合法路径 path=(v1,v2,v3,,vk)path=(v_1,v_2,v_3,\cdots,v_k) 满足:vi,vi+1E{v_i, v_{i+1}} \in E 。其中 EE 是图的边集。

输入

第一行输入一个整数 nn 表示房屋数量。

第二行 nn 个整数,每个数是 0 或者 1,其中 1 表示这间屋子的衣服是干的,0表示这间屋子的衣服是湿的。

接下来 n1n-1 行,每行两个整数 u,vu,v 表示 uuvv 之间有一条无向边。

输出

输出一行表示路径,路径需要满足:

  • 两个点之间用空格隔开。
  • 从 1 号房屋出发,使得小w按照这条路径遍历房屋之后所有屋子的衣服都是干的。
  • 路径包含的点数不超过 10710^7

任意合法路径都会被认为正确,数据保证答案存在。

样例

标准输入 复制文本
4
1 1 0 0
1 2
2 3
2 4
标准输出 复制文本
1 2 3 2 4 2 1 2 1

提示

样例解释

下面说明小w每一步后房屋衣服状态的变化:

  • 121\to 2, 22号屋子变化,衣服状态 [1,0,0,0][1, 0, 0, 0]
  • 232\to 3, 33号屋子变化,衣服状态 [1,0,1,0][1, 0, 1, 0]
  • 323\to 2, 22号屋子变化,衣服状态 [1,1,1,0][1, 1, 1, 0]
  • 242\to 4, 44号屋子变化,衣服状态 [1,1,1,1][1, 1, 1, 1]
  • 424\to 2, 22号屋子变化,衣服状态 [1,0,1,1][1, 0, 1, 1]
  • 212\to 1, 11号屋子变化,衣服状态 [0,0,1,1][0, 0, 1, 1]
  • 121\to 2, 22号屋子变化,衣服状态 [0,1,1,1][0, 1, 1, 1]
  • 212\to 1, 11号屋子变化,衣服状态 [1,1,1,1][1, 1, 1, 1]

此时所有屋子的衣服都是干的。

数据范围

20%20\% 的数据满足 n20n \leq 20

40%40\% 的数据满足 n100n \leq 100

另外 10%10\% 的数据满足只有一间屋子的衣服是湿的。

另外 10%10\% 的村庄是一条链。

100%100\% 的数据满足 n105n \leq 10^5

登录以提交代码。
单点时限 1 秒
内存限制 128 MB
提交 198
通过 32