目录
题目描述
农夫约翰的农场里有很多牧区。牛道使一些牧区与其它一些牧区相连,组成一个牧场。但是目前,你能看到至少有两个牧区不能通过任何路径连通,这使农夫约翰的农场分成了多个牧场。
农夫约翰想在牧场里添加一条牛道,对这条牛道有以下限制:
一个牧场的“直径”就是牧场中离得最远的两个牧区的最短距离。考虑如下的有5个牧区的牧场,牧区用“*”表示,牛道用直线表示。
这个牧场的“直径”大约是12.07106, 因为所有的两对牧场之间最短路径集中最长的一条是从A到E的路径(路径是A到B到E)。
假设同一平面上另外一块牧场,如下所示:
在这个只有两个牧场的农场上,农夫约翰会在这两个牧场(即点集{A,B,C,D,E}和{F,G,H})之间添加一条牛道,这样连接在一起的牧场{A,B,C,D,E,F,G,H}的直径最小。
注意,牛道不会仅仅因为它们彼此交叉而连接在一起;它们只在同一个牧区连通。
输入文件包括牧区、牧区的坐标和一个对称“邻接”矩阵,该矩阵表示两个牧区是否由牛道连接。牧区不被认为是与自己相连的。下面是一个带注释的农场{A,B,C,D,E,F,G,H}的邻接矩阵: