题目来源:OpenJudge - 131:Channel Allocation
翻译如下:
描述:
当无线电台在非常大的区域上广播时,中继器用于重新传输信号,以便每个接收器都有一个强信号。但是,必须仔细选择每个中继器使用的通道,以便附近的中继器不会相互干扰。如果相邻的中继器使用不同的通道,则满足此条件。由于无线电频谱是一种宝贵的资源,因此应尽量减少给定中继器网络所需的信道数量。您必须编写一个程序,该程序读取中继器网络的描述并确定所需的最小通道数。
输入:
输入由中继器网络的许多映射组成。每个地图都以一条包含中继器数量的线开头。这介于 1 和 26 之间,中继器由以 A 开头的字母表中连续的大写字母表示。例如,十个中继器将具有名称 A、B、C,...,I 和 J。具有零中继器的网络指示输入的结束。中继器数后面是邻接关系列表。每行都有以下形式:A:BCDH,表示中继器 B、C、D 和 H 与中继器 A 相邻。第一行描述与中继器 A 相邻的那些,第二行描述与 B 相邻的中继器,依此类推,用于所有转发器。如果中继器不相邻,则其行的形式为 A:中继器按字母顺序列出。请注意,邻接是对称关系;如果 A 与 B 相邻,则 B 必然与 A 相邻。此外,由于中继器位于平面中,因此通过连接相邻中继器形成的图形没有任何交叉的线段。
输出:
对于每个映射(没有中继器的最后一个映射除外),打印一条包含所需最小通道数的行,以便不会干扰相邻通道。示例输出显示此行的格式。请注意,当只需要一个通道时,通道采用单数形式。