解题思路
树是一种二分图。对于一棵包含 n 个路由器的树状网络,我们可以任选一个结点(例如 1 号路由器)作为根,通过 BFS/DFS 将所有路由器按层数的奇偶性分为两个集合:偶层集合 A 与奇层集合 B。由二分图的性质,集合内部的路由器之间没有光纤直接相连,只有 A 与 B 之间才可能相连。因此,只要让 A 中的路由器全部使用频道 1、B 中的路由器全部使用频道 2(或者反过来),就能保证相邻路由器频道不同。
题目给出频道编号上限 K≥2,显然使用频道 1 和 2 是合法的。为什么不需要使用更大的编号? 假设在满足相邻限制的前提下,某个路由器使用了编号 x>2,那么将其改为 1 或 2 中与相邻结点不同的那一个,总和不会增加反而可能减少。反复应用该操作,最终可得到一个所有编号均取自 {1,2} 且总和更小的解。因此最优解必然只使用频道 1 和 2。
对于上述二分图划分,只有两种可行的赋值方式:
- A 取 1,B 取 2:总和为 ∣A∣×1+∣B∣×2=n+∣B∣;
- A 取 2,B 取 1:总和为 ∣A∣×2+∣B∣×1=n+∣A∣。