题目链接:385. GF和猫咪的玩具 - AcWing题库
由于所有边的边权都是1,所以任意两个点拉紧之后,它们之间最多能拉紧的绳索数就是它们之间的最短路径。
因此跑一遍 Floyd 就能知道任意两个节点拉紧之后最多能拉紧的绳索数,然后枚举任意两个节点,
对于所有最短路径取最大值即可。
INF = float('inf')
n,m = map(int,input().split())
Map = [[INF for i in range(n+1)]for j in range(n+1)]
res = 0
for i in range(m) :
a,b = map(int,input().split())
Map[a][b] = Map[b][a] = 1
for k in range(1,n+1) :
for i in range(1,n+1) :
for j in range(1,n+1) :
if Map[i][k] + Map[k][j] < Map[i][j] : Map[i][j] = Map[i][k] + Map[k][j]
for i in range(1,n+1) :
for j in range(1,n+1) :
if Map[i][j] != INF : res = max(res,Map[i][j])
print(res)



