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 |