#1273. 「一本通 3.6 练习 1」网络

「一本通 3.6 练习 1」网络

题目描述

原题来自:CEOI 1996

一个电话线公司(简称 TLC)正在建立一个新的电话线缆网络,他们连接了若干个地点,编号分别从 11NN,没有两个地点有相同的号码。这些线是双向的并且能使两个地点保持通讯,每个地点的线都终结于电话交换机。从每个地点都能通过线缆到达其他任意的地点,它并不需要直接连接,可以通过若干个交换机来到达目的地。

有时候某个地点供电出问题时,交换机就会停止工作。TLC 的工作人员意识到,除非这个地点是不可达的,否则这种情况就会发生,它还会导致一些其它的地点不能互相通讯。在这种情况下我们会称这个地点(错误发生的地方)为灾区。现在工作人员想要写一个程序统计所有灾区的数量。帮帮他们。

换句话说,给定一个连通的无向图,求图中割点的数量。割点是指删除该顶点及其相关联的边后,图不再连通的顶点。

输入格式

输入文件包括若干组测试数据,以一行单独的 0 作为整个输入的结束。

每组测试数据描述一个网络:

  • 第一行为一个整数 NN,表示地点的总数量。
  • 接下来最多 NN 行,每行包含一个数字表示一个地点,以及若干个与它相连的地点的编号,行内所有数字用空格隔开。最多 NN 行可以完全描述整个网络,网络中每个直接连接的两个地点被至少一行包括。
  • 每组数据以一个单独的 0 结束。

输出格式

对于每组测试数据,输出一行一个整数,表示该网络中的灾区(割点)数量。

样例

5
5 1 2 3 4
0
6
2 1 3
5 4 6 2
0
0
1
2

样例解释

第一组数据:有 55 个地点,地点 551,2,3,41,2,3,4 相连,形成一个星形网络。若地点 55 发生故障,其他地点之间互不连通,因此只有地点 55 是灾区,数量为 11

第二组数据:有 66 个地点,边有 (2,1),(2,3),(5,4),(5,6),(5,2)(2,1),(2,3),(5,4),(5,6),(5,2) 等。可以验证地点 22 和地点 55 是割点,删除它们中任意一个后图不再连通,因此灾区数量为 22

数据范围与提示

  • 1N<1001 \le N < 100
  • 每个地点编号在 11NN 之间。
  • 输入以 0 结束。

来源

一本通 3.6 练习 1