QOJ.ac

QOJ

حد الوقت: 1.0 s حد الذاكرة: 2048 MB مجموع النقاط: 100

#17319. 橡果之争

الإحصائيات

有 $N$ 只松鼠在树上储存橡子。(植物学上的)橡树也是图论中的树:一个连通图,包含 $N$ 个顶点,编号从 $1$ 到 $N$,以及 $N-1$ 条无向边。每只松鼠坐在树的不同顶点上,如果两只松鼠所在的顶点共享一条边,则称它们为邻居。

按照顶点编号的升序,从位于顶点 $1$ 的松鼠开始,每只松鼠从其当前拥有橡子最多的邻居那里偷走一个橡子。如果多个邻居并列拥有最多的橡子,该松鼠会从每一个这样的邻居那里各偷走一个橡子!

为了限制这些闹剧的影响,你需要给松鼠分配橡子,使得每只松鼠开始时至少有 $N$ 个橡子(这样就不会因为被偷而耗尽橡子),并且在所有 $N$ 只松鼠完成相互偷窃后,它们拥有的橡子数量与最初相同。可以证明,存在一种分配方式,使得每只松鼠开始时最多有 $2N-1$ 个橡子。请找出满足这些条件的任意一种分配方案。

输入格式

第一行包含一个整数 $N$ ($2 \le N \le 10^5$),表示顶点(和松鼠)的数量。

接下来的 $N-1$ 行,每行包含两个空格分隔的整数 $u$ 和 $v$ ($1 \le u, v \le N, u \neq v$),表示顶点 $u$ 和 $v$ 之间存在一条边。任意一对顶点之间最多只有一条边,且这些边构成一棵树。

输出格式

输出 $N$ 个空格分隔的整数 $d_1, d_2, \dots, d_N$,满足 $N \le d_i \le 2N-1$,其中 $d_i$ 是你希望分配给位于顶点 $i$ 的松鼠的橡子数量。如果每只松鼠在所有 $N$ 次偷窃发生后,最终拥有的橡子数量与开始时相同,则你的解将被接受。可以证明,这样的橡子分配方案总是存在的。

样例

样例输入 1

5
1 2
1 3
1 4
2 5

样例输出 1

6 5 7 7 9

样例输入 2

8
5 4
3 7
8 4
4 7
5 2
1 3
6 4

样例输出 2

14 15 10 9 13 14 14 14

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.