CF1452G Game On Tree

题目描述

### 题意描述 Alice 和 Bob 在玩一个游戏。他们有一棵由 $n$ 个结点组成的树。一开始,Bob 有 $k$ 个卡片,其中第 $i$ 个卡片位于结点 $a_i$(这些结点不重复)。在游戏开始之前,Alice 将在这棵树的一个结点上放置一个卡片。 这个游戏由一些回合组成。每个回合都将有以下事件发生(完全按照以下顺序): 1. Alice 可以把她的卡片移到相邻的结点,或者不移动; 2. 对于 Bob 的每一张卡片,他可以把这张卡片移到相邻的结点,或者不移动。注意:每个卡片的选择都是独立的。 当 Alice 的卡片与 Bob 的任意一张(或多张)卡片在同一结点时,游戏结束。(Bob 自己的多张卡片可以置于同一结点上) Alice 希望游戏回合越多越好,Bob 则相反。 如果某回合中间游戏结束(即 Alice 把卡片移到了有 Bob 卡片的结点上),这回合依然算入总回合数。\ 对于每个结点,计算 Alice 一开始将卡片放在该结点时游戏将持续的回合数。

输入格式

第 $1$ 行一个整数 $n$。 第 $2$ 至第 $n$ 行:两个整数 $a_i$,$b_i$,表示这个树的一条边所连接的两个结点。 第 $n+1$ 行一个整数 $k$。 最后一行有 $k$ 个整数,表示 Bob 的每张卡片的位置。

输出格式

一行 $n$ 个整数,以空格分隔。第 $i$ 个整数为 Alice 一开始将卡片放在第 $i$ 个结点时游戏将持续的回合数。如果 Alice 一开始就把她的卡片放在 Bob 的卡片上面,游戏立即结束,视为经过了 $0$ 个回合(即输出 $0$)。