#P16690. [ICPC 2019 Jakarta R]Regular Forestation
[ICPC 2019 Jakarta R]Regular Forestation
题目描述
通常所说的“造林”是种植大量树木,使其成长为森林,往往用于替代被砍伐的森林。
有趣的是,图论研究者对“制造森林”有另一种理解:从一棵树中删除一个点。
一棵树是由 个节点和 条边组成的连通图。
设 是树 中度数至少为 的节点。删除节点 以及所有与它相连的边后,原树会分裂成两个或更多互不连通的较小树,这些树共同组成一片森林。
现在定义树的同构。
设 和 分别为树 和树 的节点集合。如果存在一个双射
使得对任意 :
在 中有边相连,当且仅当
在 中有边相连,则称树 和树 相同,即二者同构。
若删除树 中的节点 后:
- 得到至少两棵互不连通的树;
- 所有这些树两两同构;
则称节点 为一个良好切割点。
给定一棵树 ,请判断是否存在良好切割点。
如果存在,请输出删除一个良好切割点后,能够得到的连通树数量的最大值。
示例说明
下图是一棵有 个节点的树。

节点 是唯一的良好切割点。删除节点 后,得到三棵同构的链状树:
图中的三部分分别标记为 。
输入格式
第一行包含一个整数 :
表示树的节点数。
接下来 行,每行包含两个整数 :
表示节点 与 之间有一条边。
保证给定图是一棵树。
输出格式
如果存在良好切割点,输出删除一个良好切割点后能够得到的连通树数量的最大值。
如果不存在良好切割点,输出:
-1
样例 1
输入
13
1 5
1 7
2 4
2 8
2 11
3 12
4 7
4 12
6 11
7 13
9 10
9 12
输出
3
样例 2
输入
6
1 2
1 3
2 4
3 5
3 6
输出
-1