#CSPS26D. [CSP-S 2026] 研发基地 / hub

[CSP-S 2026] 研发基地 / hub

题目描述

小 W 准备在 D 国建造研发基地。D 国共有 nn 座城市,编号为 11 到 nn。这 nn 座城市由 n−1n-1 条道路连接,其中第 ii 条道路连接第 uiu_i 座和第 viv_i 座城市。若将每座城市视作一个点,将每条道路视作连接两个点的边,则这些城市和道路构成一棵树 TT。

小 W 计划选择恰好 kk 座城市,在每座选中的城市里各建造一个研发基地。为了便于协作,选中的城市在 TT 中对应的点须形成不超过两个连通块。

形式化地,建造方案 S⊆{1,2,…,n}S\subseteq\{1,2,\ldots,n\} 是合理的,当且仅当 ∣S∣=k|S|=k,且 SS 在 TT 中形成的连通块数量不超过 22。

对于合理的建造方案 SS,定义第 ii 座城市的通勤距离为

d(i)=min⁡j∈Sdist⁡(i,j),d(i)=\min_{j\in S}\operatorname{dist}(i,j),

其中 dist⁡(i,j)\operatorname{dist}(i,j) 表示从第 ii 座城市到第 jj 座城市所需经过的道路的最少条数。若 i∈Si\in S,则 d(i)=0d(i)=0。该建造方案的通勤半径为所有城市通勤距离的最大值,即 max⁡i=1nd(i)\max_{i=1}^{n}d(i)。

你需要帮助小 W 求出所有合理的建造方案的通勤半径的最小值。

输入格式

本题包含多组测试数据。

第一行包含两个非负整数 c,tc,t,分别表示测试点编号与测试数据组数。若 c=0c=0,则该测试点为样例。

接下来依次输入 tt 组测试数据。对于每组数据:

  • 第一行包含两个正整数 n,kn,k,分别表示城市数量和计划建造的研发基地数量。
  • 接下来 n−1n-1 行,第 ii 行包含两个正整数 ui,viu_i,v_i,表示第 ii 条道路连接的两座城市的编号。

输出格式

对于每组测试数据,输出一行一个非负整数,表示所有合理的建造方案的通勤半径的最小值。

样例

0 2
5 2
1 2
2 3
3 4
4 5
10 3
1 2
1 3
2 4
2 5
3 6
3 7
3 8
7 9
9 10
1
2

数据范围

设 NN 为单个测试点内所有测试数据的 nn 的和。对于所有测试数据,0≤c≤200\le c\le20,1≤t≤51\le t\le5,2≤n≤1062\le n\le10^6,N≤2×106N\le2\times10^6,2≤k≤n2\le k\le n,1≤ui,vi≤n1\le u_i,v_i\le n,且所有道路构成一棵树。

测试点编号 n≤n\le N≤N\le k≤k\le 特殊性质
1 5 15 5 无
2~3 10 30 10
4~6 100 300 100
7 1000 3000 2
8 1000
9~10 4000 10410^4 4000
11~12 10510^5 3×1053\times10^5 2
13~14 10510^5 A
15 5×1055\times10^5 10610^6 10 无
16~17 5×1055\times10^5
18~20 10610^6 2×1062\times10^6 10610^6

特殊性质 A:存在正整数 mm 满足 n=2m+1n=2m+1,且对于所有 1≤i≤m1\le i\le m,均有 ui=iu_i=i、vi=i+1v_i=i+1;对于所有 m+1≤i≤n−1m+1\le i\le n-1,均有 ui=i−mu_i=i-m、vi=i+1v_i=i+1。