#BW250. 密钥古树
密钥古树
密钥古树
题目描述
在群山深处的“密码档案馆”里,生长着一棵古老的密钥古树。这棵树是一棵普通的二叉树,枝干交错,每个节点上都有天然形成的纹路,纹路只有两种形态,分别记作 0 和 1,即每个节点承载 1 比特的信息。传说,从树根出发,沿着枝干一路抵达叶片的每一条路径,都会形成一段独特的二进制密钥:根节点上的纹路代表密钥的最高位,越靠近叶片,数位越低。例如,若一条路径上的纹路序列为 1 -> 0 -> 1,则它解析出的二进制数为 101,对应的十进制数值为 。
档案馆的守护者需要遍历整棵密钥古树,把所有从根节点到叶子节点的路径所代表的二进制数全部解析出来,并计算它们的数值总和。只有准确求出这个总和,才能打开档案馆最深处的密钥匣。
具体来说,给定一棵密钥古树的节点总数 、每个节点承载的比特值,以及 条连接节点的边。虽然输入看起来是无向边,但在解析密钥时,我们默认节点 为整棵树的根节点,数据流向是从上至下的。请计算所有从根节点到叶子节点的路径所代表的二进制数的总和。题目数据保证,即便在所有路径累加之后,最终结果依然可以被存储在一个标准的 32 位整数中。
输入格式
第一行输入一个整数 (),表示这棵密钥古树的节点总数。
第二行输入 个整数 ,其中 表示编号为 的节点承载的比特值( 或 )。
接下来的 行,每行包含两个整数 和 ,表示节点 和节点 之间有一条物理链路相连。
注意:节点编号从 开始计数。虽然输入看起来是无向边,但在解析密钥时,我们默认节点 为整棵树的根节点,数据流向是从上至下的。
输出格式
输出一个整数,表示所有根到叶路径所代表的二进制数的总和。
输入输出样例
5
1 1 0 1 0
1 2
1 3
2 4
2 5
15
样例解释:
这棵密钥古树的结构如下:
1
/ \
1 0
/ \
1 0
共捕获 3 条有效链路:
- 链路
1 → 0:解析为10,数值为 。 - 链路
1 → 1 → 1:解析为111,数值为 。 - 链路
1 → 1 → 0:解析为110,数值为 。
校验总和为 。
相关
在下列比赛中:
