树的比特数
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
在数字通信与密码学领域,二进制串的传输与解析是基础中的基础。现在,我们需要测试一套新型的数据传输协议。
我们构建了一棵比特树(),这是一棵普通的二叉树,树上的每一个节点都承载着 1 比特的信息(值为 0 或 1)。
在这套协议中,从根节点出发,沿着边一路向下抵达叶子节点的每一条链路,都会被解析为一个完整的二进制编码。其中,根节点代表二进制的最高位,越靠近叶子节点,数位越低。
例如,若一条链路上的数字序列为 1 -> 0 -> 1,则解析出的二进制数为 101,其对应的十进制数值为 。
你的任务是:模拟这套协议的计算核心。你需要遍历整棵比特树,将所有从根节点到叶子节点的路径所代表的二进制数全部累加,计算出它们的总和。题目数据保证,即便在所有路径累加之后,最终的结果依然可以被存储在一个标准的 32 位整数中。
输入格式
第一行输入一个整数 (),表示这棵比特树的节点总数。
第二行输入 个整数 ,其中 表示编号为 的节点承载的比特值( 或 )。
接下来的 行,每行包含两个整数 和 ,表示节点 和节点 之间有一条物理链路相连。
注意:节点编号从 开始计数。虽然输入看起来是无向边,但在解析协议时,我们默认节点 为整个树的根节点,数据流向是从上至下的。
输出格式
输出一个整数,表示所有根到叶路径所代表的二进制数的总和。
输入输出样例
7
1 0 1 0 1 0 1
1 2
1 3
2 4
2 5
3 6
3 7
22
样例解释:
这棵比特树的结构及其解析过程如下:
1
/ \
0 1
/ \ / \
0 1 0 1
协议共捕获 4 条有效链路:
- 链路
1 → 0 → 0:解析为100,数值为 。 - 链路
1 → 0 → 1:解析为101,数值为 。 - 链路
1 → 1 → 0:解析为110,数值为 。 - 链路
1 → 1 → 1:解析为111,数值为 。 校验总和为 。
2026年05月24日周日高级别段C++信息学周赛
- 状态
- 已结束
- 规则
- IOI
- 题目
- 4
- 开始于
- 2026-5-24 9:30
- 结束于
- 2026-5-24 13:00
- 持续时间
- 3.5 小时
- 主持人
- 参赛人数
- 6