#P16890. [GKS 2022 #F] Water Container System

    ID: 19218 远端评测题 3000ms 1024MiB 尝试: 0 已通过: 0 难度: 5 上传者: 标签>搜索2022广度优先搜索 BFSGoogle Kick Start

[GKS 2022 #F] Water Container System

题目描述

有一个由 NN 个相同容器组成的水容器系统,该系统可以表示为一棵树,其中每个容器是一个顶点。容器之间由 N1N-1 条双向管道连接。相互连接的两个容器总是位于相邻的层级。形式化地说,如果两个容器 aabb 相连,则 levelalevelb=1|\text{level}_a - \text{level}_b| = 1。容器 11 位于最底层。每个容器恰好连接一个下方层级的容器(唯一的例外是容器 11,它下方没有连接),但可以连接零个或多个上方层级的容器。每个容器的最大容量为 11 升,初始时所有容器都是空的。假设管道的容量为 00 升,即它们不储存任何水,只允许水以任意方向通过。

下图是一个水容器系统的示例:

:::align{center} :::

系统的第一层只有一个容器,即容器 11(根)。容器 11 连接到位于上一层(第 22 层)的容器 22 和容器 33。容器 22 还连接到位于第 33 层的容器 44

你会得到 QQ 个查询。每个查询包含一个整数 ii,表示一个容器。对于每个查询,向容器 ii 中额外添加 11 升水。

下图展示了不同条件下系统中水的流动情况:

:::align{center} :::

  • 11 步:向容器 33 添加 11 升水后,水向下流动,因为较低层的水容器还是空的。
  • 22 步:再次向容器 33 添加 11 升水后,水向下流动,但由于容器 11 已完全填满,水在容器 22 和容器 33 之间均匀分配。
  • 33 步:再次向容器 33 添加 11 升水后,容器 22 和容器 33 均完全填满。
  • 44 步:再次向容器 33 添加 11 升水后,水被向上推至容器 44,容器 44 随即被完全填满。

如上例所示,同一层的容器将具有相同的水量。请找出在处理完所有查询后,被完全填满的容器数量。

输入格式

输入的第一行给出测试用例的数量 TT。接下来有 TT 个测试用例。

每个测试用例的第一行包含两个整数 NNQQ,其中 NN 是容器的数量,QQ 是查询的数量。

接下来的 N1N-1 行,每行包含两个整数 iijj1i,jN1 \le i, j \le Niji \ne j),表示第 ii 个水容器与第 jj 个水容器相连。

接下来的 QQ 行,每行包含一个整数 ii1iN1 \le i \le N),表示应向哪个容器添加 11 升水。

输出格式

对于每个测试用例,输出一行,格式为 Case #x: y,其中 xx 是测试用例编号(从 11 开始),yy 是在处理完所有查询后被完全填满的容器数量。

2
1 1
1
3 2
1 2
1 3
1
2
Case #1: 1
Case #2: 1

2
4 4
1 2
1 3
2 4
3
3
3
3
5 2
1 2
5 3
3 1
2 4
4
5
Case #1: 4
Case #2: 1

提示

在样例 #1 中,有 N=1N = 1 个水容器。向容器 11 添加 11 升水后,被完全填满的容器数量为 11

在样例 #2 中,有 N=3N = 3 个水容器。处理完所有查询后,被完全填满的容器数量为 11

:::align{center} :::

  • 向容器 11 添加 11 升水后:容器 11 被完全填满,其余容器为空。
  • 向容器 22 添加 11 升水后:容器 11 被完全填满,容器 2233 部分填满。

限制条件

1T1001 \le T \le 100

1QN1 \le Q \le N

保证给出的水容器系统是一棵树。

测试集 1

1N655351 \le N \le 65535

水容器系统是一棵完美二叉树。

测试集 2

1N1041 \le N \le 10^4

翻译由 DeepSeek V4 Pro 完成