Coding is the closest thing we have to superpower !

3550 : 树进阶-树的重心
描述

给你一棵树,求树的重心节点,如果有多个,从小到大输出所有重心。

输入

第一行输入一个整数n。

接下来n - 1行每行两个整数a,b表示一条树边。

1 \le n \le 10000, 1 \le a, b \le n

输出

从小到大输出所有重心。

样例

输入

3
1 2
1 3

输出

1

输入

4
3 1
1 2
2 4

输出

1 2

输入

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

输出

2
提示

树的重心有下面几条常见性质:

定义1:找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心
定义2:以这个点为根,那么所有的子树(不算整个树自身)的大小都不超过整个树大小的一半。
性质1:树中所有点到某个点的距离和中,到重心的距离和是最小的;如果有两个重心,那么他们的距离和一样。
性质2:把两个树通过一条边相连得到一个新的树,那么新的树的重心在连接原来两个树的重心的路径上。
性质3:把一个树添加或删除一个叶子,那么它的重心最多只移动一条边的距离。

标签
语言:
主题: