CF1452G.Game On Tree
省选/NOI-
通过率:0%
时间限制:3.00s
内存限制:512MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Alice and Bob are playing a game. They have a tree consisting of n vertices. Initially, Bob has k chips, the i-th chip is located in the vertex ai (all these vertices are unique). Before the game starts, Alice will place a chip into one of the vertices of the tree.
The game consists of turns. Each turn, the following events happen (sequentially, exactly in the following order):
- Alice either moves her chip to an adjacent vertex or doesn't move it;
- for each Bob's chip, he either moves it to an adjacent vertex or doesn't move it. Note that this choice is done independently for each chip.
The game ends when Alice's chip shares the same vertex with one (or multiple) of Bob's chips. Note that Bob's chips may share the same vertex, even though they are in different vertices at the beginning of the game.
Alice wants to maximize the number of turns, Bob wants to minimize it. If the game ends in the middle of some turn (Alice moves her chip to a vertex that contains one or multiple Bob's chips), this turn is counted.
For each vertex, calculate the number of turns the game will last if Alice places her chip in that vertex.
爱丽丝和鲍勃正在玩一个游戏。他们有一棵包含 n 个顶点的树。初始时,鲍勃拥有 k 枚棋子,第 i 枚棋子位于顶点 ai(这些顶点互不相同)。在游戏开始前,爱丽丝需将她的棋子放置在树的某个顶点上。
游戏由若干轮组成。每一轮中,以下事件按顺序、依次发生:
- 爱丽丝选择将其棋子移动到一个相邻顶点,或保持不动;
- 对于鲍勃的每一枚棋子,他独立地选择将其移动到一个相邻顶点,或保持不动。
当爱丽丝的棋子与鲍勃的一枚(或多枚)棋子处于同一顶点时,游戏结束。注意:鲍勃的棋子可能在游戏过程中占据同一顶点,尽管它们初始位置互不相同。
爱丽丝希望最大化游戏持续的轮数,而鲍勃则希望最小化该轮数。若游戏在某一轮中途结束(即爱丽丝在该轮中将其棋子移至一个已有鲍勃棋子的顶点),则该轮仍被计入总轮数。
对树中的每个顶点,请计算:若爱丽丝将她的棋子初始放置在该顶点上,则游戏将持续多少轮。
输入格式
The first line contains one integer n (2≤n≤2⋅105) — the number of vertices in the tree.
Then n−1 lines follow, each line contains two integers ui, vi (1≤ui,vi≤n; ui=vi) that denote the endpoints of an edge. These edges form a tree.
The next line contains one integer k (1≤k≤n−1) — the number of Bob's chips.
The last line contains k integers a1, a2, ..., ak (1≤ai≤n; ai=aj if i=j) — the vertices where the Bob's chips are initially placed.
第一行包含一个整数 n(2≤n≤2⋅105)——树中顶点的数量。
接下来 n−1 行,每行包含两个整数 ui、vi(1≤ui,vi≤n;ui=vi),表示一条边的两个端点。这些边构成一棵树。
下一行包含一个整数 k(1≤k≤n−1)——Bob 的棋子数量。
最后一行包含 k 个整数 a1、a2、...、ak(1≤ai≤n;当 i=j 时,ai=aj)——Bob 的棋子初始放置的顶点。
输出格式
Print n integers. The i-th of them should be equal to the number of turns the game will last if Alice initially places her chip in the vertex i. If one of Bob's chips is already placed in vertex i, then the answer for vertex i is 0.
输出 n 个整数。其中第 i 个整数应等于:若爱丽丝初始时将她的棋子放置在顶点 i,则游戏将持续的轮数。如果顶点 i 上已有一个鲍勃的棋子,则顶点 i 对应的答案为 0。
输入输出样例
输入#1
5 2 4 3 1 3 4 3 5 2 4 5
输出#1
2 1 2 0 0
输入#2
8 4 1 8 4 4 5 6 4 2 5 4 3 1 7 3 2 8 3
输出#2
3 0 0 3 1 2 3 0
输入#3
10 2 5 4 3 7 3 7 2 5 8 3 6 8 10 7 9 7 1 4 10 6 9 1
输出#3
0 2 2 2 2 0 2 2 0 0
输入解题思路,AI测评打分。不知道怎么写?