#P17282. [2024年南开中学集训]团战
[2024年南开中学集训]团战
题目描述
“连团战都不会,真菜。”
收到队友这样的评论后,新手小 C 破防了。他打算尝试一款新的多人游戏。游戏有 人参加,围坐成一个环,每人初始有 张牌。从任意一个人开始进行第一轮操作。对于游戏的第 轮,假设操作的人为 , 顺时针方向的下一个人为 ,操作过程为:
- 需要给 共 张牌,如果超过了自身手牌数,则将手上的牌全部给出。
- 如果 此时没牌了, 从环内退出;如果此时环上只剩下一个人,则游戏结束。
- 如果游戏没有结束,第 轮操作的人为 。
在有些参加人数 的状况下,游戏会出现循环。新手小 C 定义了一个函数 ,表示 个人玩这个游戏时,最终游戏进入循环时,最短循环节包含的轮次数是多少。
具体来说,一次游戏当中,两个状态相同当且仅当两个状态中环上人数相同,每人手中的牌数相同,且下一次该操作的人相同。 表示 个人开始游戏,不断进行下去,状态相同的两个轮次的轮次编号差值的最小值。特别地,如果 个人开始游戏,游戏最终结束,则 。
新手小 C 还在玩这个简单的游戏的时候,你已经开始研究数数了。现在你拿到了一棵 个点的树,每个点有点权 ,边长均为 。设树上两点 的最短距离为 。你现在想知道对于每个点 ,
的值是多少呢?
输入格式
第一行一个整数 ,表示树的节点个数。
接下来一行 个整数,依次表示 。
接下来 行,每行两个整数 ,表示树上一条连接 的无向边,保证给出的图是一棵树。
输出格式
一行 个整数,表示对于每个点的答案。
样例输入
5
1 2 3 4 5
1 2
3 2
3 5
5 4
样例输出
12 12 0 0 0
样例解释
对于 号点,各节点距离为 ,所求答案为
。
时游戏会结束, 时最终循环的六个状态为:
,
。因此 号点答案为 。其余点的计算方式类似。
数据范围
对于全部的数据:
- 保证所有输入的边构成一棵树
| 子任务 | 限制 | 分值 |
|---|---|---|
| Subtask 1 | 6 pts | |
| Subtask 2 | 8 pts | |
| Subtask 3 | 10 pts | |
| Subtask 4 | 12 pts | |
| Subtask 5 | 15 pts | |
| Subtask 6 | ,每个点的度数不超过 | 8 pts |
| Subtask 7 | 每个点的度数不超过 | 12 pts |
| Subtask 8 | 树的形态随机 | 11 pts |
| Subtask 9 | 无特殊限制 | 18 pts |