#1273. 「一本通 3.6 练习 1」网络
「一本通 3.6 练习 1」网络
题目描述
原题来自:CEOI 1996
一个电话线公司(简称 TLC)正在建立一个新的电话线缆网络,他们连接了若干个地点,编号分别从 到 ,没有两个地点有相同的号码。这些线是双向的并且能使两个地点保持通讯,每个地点的线都终结于电话交换机。从每个地点都能通过线缆到达其他任意的地点,它并不需要直接连接,可以通过若干个交换机来到达目的地。
有时候某个地点供电出问题时,交换机就会停止工作。TLC 的工作人员意识到,除非这个地点是不可达的,否则这种情况就会发生,它还会导致一些其它的地点不能互相通讯。在这种情况下我们会称这个地点(错误发生的地方)为灾区。现在工作人员想要写一个程序统计所有灾区的数量。帮帮他们。
换句话说,给定一个连通的无向图,求图中割点的数量。割点是指删除该顶点及其相关联的边后,图不再连通的顶点。
输入格式
输入文件包括若干组测试数据,以一行单独的 0 作为整个输入的结束。
每组测试数据描述一个网络:
- 第一行为一个整数 ,表示地点的总数量。
- 接下来最多 行,每行包含一个数字表示一个地点,以及若干个与它相连的地点的编号,行内所有数字用空格隔开。最多 行可以完全描述整个网络,网络中每个直接连接的两个地点被至少一行包括。
- 每组数据以一个单独的
0结束。
输出格式
对于每组测试数据,输出一行一个整数,表示该网络中的灾区(割点)数量。
样例
5
5 1 2 3 4
0
6
2 1 3
5 4 6 2
0
0
1
2
样例解释
第一组数据:有 个地点,地点 与 相连,形成一个星形网络。若地点 发生故障,其他地点之间互不连通,因此只有地点 是灾区,数量为 。
第二组数据:有 个地点,边有 等。可以验证地点 和地点 是割点,删除它们中任意一个后图不再连通,因此灾区数量为 。
数据范围与提示
- 每个地点编号在 到 之间。
- 输入以
0结束。
来源
一本通 3.6 练习 1