#lg15947. [JOI Final 2026] 集邮 5 / Collecting Stamps 5
[JOI Final 2026] 集邮 5 / Collecting Stamps 5
#5671. 「JOI 2026 Final Day3」邮戳拉力赛 5
标签: 传统 | 时间限制: 3000 ms | 内存限制: 1024 MiB |
题目描述
题目译自 JOI 2026 Final Day3 T3 「スタンプラリー 5 / Collecting Stamps 5」
JOI 君居住的 IOI 国有 个城市,编号从 到 。此外,IOI 国还有 条道路,编号从 到 。第 条道路 双向连接城市 和 。在该国,从任意一个城市出发,都可以通过若干条道路到达任何另一个城市。
IOI 国即将举办一场集章拉力赛。每个城市都计划设置一个集章台。城市 的集章台将于时刻 设置完成。
JOI 君决定参加这场集章拉力赛。他将在时刻 从任意一个城市开始行动。此外,在时刻 时,JOI 君的初始体力为 。
当 JOI 君在时刻 位于城市 时,他会采取以下行动:
- 首先,如果当前所在的城市已经设置了集章台,则盖章。也就是说,如果 ,则盖一个章。
- 接下来,选择结束拉力赛或是移动到另一个城市。但是,只有当存在与城市 有道路相连且尚未访问过的城市,并且当前的体力不少于 时,他才能选择移动到另一个城市。
- 如果 JOI 君选择移动,他会从与城市 有道路连接且尚未访问过的城市中选择一个城市 进行移动。此时体力减少 ,并于时刻 到达城市 。
- 如果 JOI 君选择结束拉力赛,若在此之前他至少盖过一次章,则视为集章拉力赛成功,他可以当场领取一份奖品;否则,视为集章拉力赛失败。
除了城市间的移动时间外,其他时间均可忽略。请注意,JOI 君不能停留在同一个城市不动。
作为大赛的运营者,你需要为 JOI 君成功完成拉力赛的情况在每个城市准备奖品。由于奖品数量有限,你希望在必要且最小限度的城市准备奖品。然而,你并不知道 JOI 君会从哪个城市开始行动。因此,对于每个 ,你想要求出:如果 JOI 君从城市 开始行动,有多少个城市 满足「JOI 君在城市 结束拉力赛时,有成功完成拉力赛的可能性」。
给定 IOI 国的城市与道路信息、JOI 君的体力以及集章台的设置时刻,请编写一个程序,对于每个城市,求出当 JOI 君从该城市开始行动时,需要准备奖品的城市数量。
输入格式
第一行包含两个整数 。
第二行包含 个整数
接下来的 行,其中第 行包含两个整数 。
输出格式
在标准输出中输出 行。第 行应输出当 JOI 君从城市 开始行动时,需要准备奖品的城市数量。
样例 1
输入
5 2
2 2 0 1 3
1 2
2 3
2 4
4 5
输出
2
3
4
2
2
当 时,JOI 君的一种行动示例如下:
- JOI 君时刻 位于城市 ,并采取以下行动。
- 城市 的集章台尚未设置完成,因此 JOI 君不盖章。
- JOI 君当前的体力为 。他选择移动到与城市 相连且尚未访问过的城市 。
- JOI 君的体力减少 ,并于时刻 到达城市 。
- JOI 君时刻 位于城市 ,并采取以下行动。
- 城市 的集章台尚未设置完成,因此 JOI 君不盖章。
- JOI 君当前的体力为 。他选择移动到与城市 相连且尚未访问过的城市 。
- JOI 君的体力减少 ,并于时刻 到达城市 。
- JOI 君时刻 位于城市 ,并采取以下行动。
- 城市 的集章台已经设置完成,因此 JOI 君盖章。
- JOI 君在此选择结束拉力赛。由于他此前至少盖过一次章,因此集章拉力赛成功。他当场领取奖品。
因此,如果 JOI 君从城市 开始行动,并在城市 结束拉力赛,存在成功的可能性,所以需要在城市 准备奖品。当 JOI 君从城市 开始行动时,需要准备奖品的城市仅有城市 和城市 ,故第一行输出 。
此外,当 JOI 君从城市 开始行动时,需要准备奖品的城市有城市 、城市 和城市 ,共 个,故第二行输出 。
该样例满足子任务 的限制。
样例 2
输入
5 1
0 1 2 1 2
1 2
2 3
3 4
4 5
输出
2
1
2
0
1
该样例满足子任务 的限制。
样例 3
输入
7 6
2 3 0 4 1 3 4
1 2
2 3
2 4
1 5
1 6
6 7
输出
2
2
7
5
1
2
5
该样例满足子任务 的限制。
数据范围与提示
对于所有输入数据,满足:
- 。
- 。
- 。
- 。
- 任意两个城市之间都可以通过若干条道路互相到达。
- 所有输入的数值均为整数。
详细子任务附加限制及分值如下表所示。
| 子任务 | 分值 | 附加限制 |
|---|---|---|
| 无附加限制 |