#P2210. 大陆(mainland)
大陆(mainland)
【题目描述】
欧艾大陆由 n 个城市组成,呈树形结构。每一个城市就是一个树上的顶点,由无向边相连。
为了方便管理,国王 𝐶rying 希望能够将欧艾大陆的城市分成若干个省,使得每个城市都恰好在一个省内。
𝐶rying 是一个理智的人,经过精密的统计和计算,他认为每个省应该满足以下条件:
- 不能包含太多或太少的城市:即大小应该在 [𝐵, 3 ×𝐵] 内,其中 𝐵 是一个给定的参数。
- 需要指定一个城市作为这个省的省会,与地球人的常识不同,这个省的省会可以不属于这个省,且一个城市可以作为多个省的省会,但是对于每个城市 𝑥,如果该城市所属于的省的省会是 y,那么 (𝑥,y) 之间的简单路径上的所有点都要满足和 𝑥 在同一个省。
你作为国王的首席智囊团,需要帮助他找到一组满足条件的划分方法。 如果有多组划分方案,只需要其中一组即可。
数据保证存在至少一种划分方案。
【输入格式】
第一行两个正整数n,𝐵,表示城市的总数和对省份大小的限制。
接下来 n −1 行,每行两个正整数 𝑥,y,描述一条边。
【输出格式】
第一行一个正整数𝑘,表示将图划分成的省的个数。
第二行n 个数 𝑎1 ,𝑎2 , … ,𝑎𝑛 ,𝑎𝑖 表示第 i个城市属于哪一个省。
第三行 𝑘 个数 𝑏1 ,𝑏2 , … ,𝑏𝑘,𝑏𝑖表示第 i 个省的省会城市。 请保证 𝑘 ≤ n,可以证明,必然存在一种 𝑘 ≤ n 的划分方案。
【样例1 输入】
8 2
1 2
2 3
1 8
8 7
8 6
4 6
6 5
【样例1 输出】
3
2 1 1 3 3 3 3 2
2 1 8
【数据范围】
对于 40% 的数据,n ≤100。
对于 100% 的数据,1≤ 𝐵 ≤ n ≤10000,保证给定的图是一棵树。
相关
在下列比赛中: