题目:131:Channel Allocation(OpenJudge - 131:Channel Allocation)
翻译:
当无线电台在非常大的区域上广播时,中继器可用于转换重新传输信号,使得每个接收机具有强信号。然而,每个中继器所使用的信道必须仔细选择,这样方便了附近的中继器不会相互干扰。如果相邻的中继器使用不同的信道,则满足此条件。
由于无线电频谱是一种宝贵的资源,渠道的数量要求给定的网络中继器应该最小化。必须编写一个程序,读取中继器网络的描述并确定所需通道的最小数量。
输入
输入包括许多中继器网络图。每个地图由包含中继器数量的一行开始。这是在1到26之间,重复音是由字母表中以A开头的连续大写字母来表示。例如,10个重复音是A,B,C,…,I和J。一个0表示中继器的网络结束。
在重复器的数目之后是邻接关系的列表。每一行都有如下形式:
A:BCDH
这表示中继器B、C、D、H与中继器A相邻,第一行表示与中继器A相邻,第二行表示与中继器B相邻,以此类推。如果一个中继器与其他任何中继器不相邻,则表示为:
A:
中继器是按照字母顺序排序的。
注意,邻接关系是一种对称关系;如果A与B相邻,那么B必定与A相邻。另外,由于中继器位于一个平面上,由相邻中继器连接而成的图没有任何相交的线段。
输出
对于每个映射(除了最后一个没有重复器的映射),打印一行包含所需的最小通道数,方便使其没有相邻的通道干扰。示例输出显示了这一行的格式。当只需要一个通道时,要注意通道是单数形式的。
样例输入
2 A: B: 4 A:BC B:ACD C:ABD D:BC 4 A:BCD B:ACD C:ABD D:ABC 0
样例输出
1 channel needed. 3 channels needed. 4 channels needed.