信道分配
时间限制:1秒 内存限制:256M
【问题描述】
当无线电台在非常大的区域进行广播时,会使用中继器重新传输信号,以便每个接收器都具有强信号。但是,必须仔细选择每个中继器使用的信道,以免附近的中继器相互干扰。如果相邻中继器使用不同的信道,则满足此条件。
由于无线电频谱是一种宝贵的资源,因此应尽量减少给定中继器网络所需的信道数量。您必须编写一个程序来读取中继器网络的描述并确定所需的最小信道数。
【输入格式】
输入由许多中继器网络的地图组成。每个地图都以包含中继器数量的行开始。这在 1 到 26 之间,中继器由字母表中以 A 开头的连续大写字母表示。例如,十个中继器的名称为 A、B、C、...、I 和 J。A具有零个中继器的网络表示输入结束。
在中继器数量之后是邻接关系列表。每行的格式为:A:BCDH,表示中继器 B、C、D 和 H 与中继器 A 相邻。第一行描述与中继器 A 相邻的那些,第二行与 B 相邻,依此类推的中继器。如果中继器不与任何其他中继器相邻,则其行具有形式 A:
中继器按字母顺序列出。
注意邻接是对称关系;如果A与B相邻,则B必然与A相邻。另外,由于中继器位于一个平面内,因此相邻中继器连接形成的图形没有任何相交的线段。
【输出格式】
对于每张地图(除了最后一张没有中继器的地图),打印一行包含所需的最小频道数,以便没有相邻频道干扰。示例输出显示了该行的格式。当只需要一个信道时,注意信道是单数形式。
【输入输出样例】
Input
2
A:
B:
4
A:BC
B:ACD
C:ABD
D:BC
4
A:BCD
B:ACD
C:ABD
D:ABC
0
Output
1 channel needed.
3 channels needed.
4 channels needed.
【来源】
Mr.he