Bytown 的街道网络包含 $n$ 个路口和 $n-1$ 条双向街道,每条街道直接连接一对路口,且任意两个路口之间都可以互相到达。为了改善交通,市长 Byteasar 想要建设一个地铁系统。具体来说,他希望在某些路口设置地铁站,并铺设轨道,使轨道穿过部分街道。地铁网络应该是连通的,即列车必须能够在任意两个地铁站之间通行,途中可能经过其他地铁站。
挖掘隧道的成本很高,但建设终点站(即只有一条隧道进入的车站)的成本更高,因为这些车站需要额外的基础设施来停放和维护列车。由于财政限制,终点站的数量最多只能有 $k$ 个。另一方面,一个合理的地铁网络至少需要两个这样的车站。
乘客的“烦躁指数”是指他们从家出发,步行到达最近的地铁站所需经过的最少街道数量。市长要求设计一个地铁网络,以最小化所有乘客烦躁指数的最大值。我们假设每个路口都住着一些乘客。
输入格式
第一行包含两个整数 $n$ 和 $k$ ($n \ge 3, 2 \le k \le n$),用空格分隔,分别表示路口数量和终点站的最大数量。路口编号为 $1$ 到 $n$。
接下来的 $n-1$ 行,每行包含两个整数 $a$ 和 $b$ ($1 \le a, b \le n, a \neq b$),用空格分隔,表示路口 $a$ 和 $b$ 之间直接由一条街道相连。
输出格式
第一行输出两个整数 $r$ 和 $s$,用空格分隔,分别表示乘客烦躁指数的最大值的最小值,以及在该设计下终点站的数量(满足 $2 \le s \le k$)。第二行输出 $s$ 个不同的整数,范围在 $1$ 到 $n$ 之间,对应于设置终点站的路口编号。
在所有网络设计中,应优先选择 $r$ 最小的设计。如果存在平局,次要目标是最小化 $s$。如果存在多个满足 $r$ 最小且 $s$ 最小的设计,则可以输出其中任意一个。
样例
样例输入 1
8 3 1 5 2 5 2 7 3 7 4 5 5 6 7 8
样例输出 1
1 2 8 1
说明
街道网络如图所示。最优的地铁网络设计有两个终点站(位于 1 号和 8 号路口)。其对应的乘客烦躁指数最大值为 1。请注意,还存在其他满足 $r=1$ 和 $s=2$ 的最优地铁网络设计。此外也存在 $r=1$ 和 $s=3$ 的网络,但它们不是最优的。
样例测试
- 1ocen: $n = 30, k = 29$,路口 $2, \dots, n$ 均与路口 $1$ 相连。
- 2ocen: $n = 5000, k = 4000$,路口 $1, 2, \dots, 2000$ 依次相连形成一条路径,路口 $2001, \dots, 3500$ 均与路口 $1$ 相连,路口 $3501, \dots, 5000$ 均与路口 $2000$ 相连。
- 3ocen: $n = 2^{20} - 1, k = 1509$,路口构成一棵满二叉树。
评分
测试集由以下子任务组成。每个子任务内可能包含多个测试点。 如果程序仅第一行输出正确,将获得该测试点 50% 的分数。请记住,程序仍需正常终止,且不能超过时间和内存限制。各子任务的时间限制发布在 SIO 上。
| 子任务 | 数据范围 | 分值 |
|---|---|---|
| 1 | $n \le 5000$ | 30 |
| 2 | $n \le 500\,000$ | 40 |
| 3 | $n \le 3\,000\,000$ | 30 |