#P1388. Hinge Node Problem

Hinge Node Problem

P1388. 枢纽节点问题

描述

几十年来,人们已经认识到数据通信的重要性。通信网络的大多数设计和分析通常将其拓扑结构建模为图形表示,因为网络的许多相关问题可以通过使用图论结果来解决。通常,一个通信网络被建模为一个图,图中的节点和边分别对应通信站点和链路。一个网络G=(N,E)G = (N, E)由一组节点NN和一组边EE组成,边表示节点对。如果这些节点对被认为是无序的,那么我们就有一个无向网络,连接两个节点uuvv的边用(u,v)(u, v)表示。例如,图 3 描绘了一个包含 10 个节点和 16 条边的网络GG

在一个网络GG中,两个节点uuvv之间的距离,用dG(u,v)d_G(u, v)表示,是GG中从uuvv的最短路径的边数。顶点序列v1,v2,,vkv_1, v_2, \cdots, v_kGG中从v1v_1vkv_k长度为k1k - 1的路径,条件是对于i=1,2,,k1i = 1, 2, \cdots, k - 1,在viv_ivi+1v_{i + 1}之间有一条边。如果节点uuvv之间不存在路径,那么dG(u,v)=d_G(u, v) = \infty。如果路径的长度在uuvv之间的所有路径中是最小的,那么该路径就是uuvv之间的最短路径。如果任意两个节点之间都存在路径,那么这个网络是连通的。节点ww的失效意味着ww及其所有关联边都从GG中移除,剩余的子网络表示为GwG - w。节点ww被称为枢纽节点,如果在GG中存在另外两个节点uuvv,使得dGw(u,v)>dG(u,v)d_{G - w}(u, v) > d_G(u, v)。这意味着在节点wwGG中移除后,uuvv之间的距离增加了。因此,枢纽节点可以被视为相应网络的关键节点,这样的节点失效会增加剩余子网络的通信成本。例如,我们考虑图 3 中的网络GG。节点v2v_2是一个枢纽节点,因为dGv2(v8,v9)=3>dG(v8,v9)=2d_{G - v_2}(v_8, v_9) = 3 > d_G(v_8, v_9) = 2。实际上,GG中包含的枢纽节点集合是{v2,v3,v4,v7,v8,v10}\{v_2, v_3, v_4, v_7, v_8, v_{10}\}

假设我们有几个网络。每个网络都是连通的,并且最多包含nn个节点,其中3n1003 \leq n \leq 100。现在假设你被聘请为网络管理员,你应该分析通信成本。因此,你会对找到给定网络中的所有枢纽节点感兴趣。特别地,你应该设计一个程序,能够有效地计算每个给定网络中枢纽节点的总数。

输入

输入文件包含多于一个且少于六个网络(案例)。每个测试用例以一个正整数nn开始,其中3n1003 \leq n \leq 100。接下来的nn行表示一个网络GG的邻接矩阵。最后一个案例后面跟着一个“0”,表示“输入结束”。一个具有nn个节点的网络GG的邻接矩阵,用A(G)=[au,v]A(G) = [a_{u, v}]表示,是一个n×nn \times n0,10, 1矩阵,使得如果(u,v)E(u, v) \in E,则au,v=1a_{u, v} = 1,否则au,v=0a_{u, v} = 0。注意,在0,10, 1矩阵的每一行中,任意两个元素之间没有分隔符。例如,图 3 中图形的邻接矩阵如示例输入的测试用例 3 所示。

输出

对于每个测试用例,在一行中输出枢纽节点的总数。

输入数据 1

3
010
101
010
3
011
101
110
10
0110001000
1001000111
1000001100
0100010101
0000000101
0001000001
1010000010
0111100000
0100001000
0101110000
0 

输出数据 1

1
0
6 

来源

台湾 2001