#C. 奶牛的旅行

    传统题 1000ms 256MiB

奶牛的旅行

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

农民 John 的农场里有很多牧区。有的路径连接一些特定的牧区。一片所有连通的牧区称为一个牧场。但是就目前而言,你能看到至少有两个牧区通过任何路径都不连通。这样,农民 John 就有多个牧场了。

John 想在农场里添加一条路径(注意,恰好一条)。

一个牧场的直径就是牧场中最远的两个牧区的距离(本题中所提到的所有距离指的都是最短的距离)。

15,15      20,15
          D          E
          *----------*
          |        _/|
          |      _/  |
          |    _/    |
          |  _/      |
          |_/        |
    *-----*----------*
    A     B          C
   10,10 15,10     20,10

这个牧场的直径大约是 12.07106,最远的两个牧区是 A 和 E,它们之间的最短路径是 A-B-E。

另一个牧场:

* F 30,15
              /
           _/
        _/
     /
   *-----------*
   G      H
 25,10   30,10

John 将在两个牧场中各选一个牧区,用一条路径连接,使新牧场直径最小。

注意:路径中途相交不算连通,必须在牧区节点相交。 输入文件包括牧区、它们各自的坐标,还有一个如下的对称邻接矩阵:

A B C D E F G H
A 0 1 0 0 0 0 0 0
B 1 0 1 1 1 0 0 0
C 0 1 0 0 1 0 0 0
D 0 1 0 0 1 0 0 0
E 0 1 1 1 0 0 0 0
F 0 0 0 0 0 0 1 0
G 0 0 0 0 0 1 0 1
H 0 0 0 0 0 0 1 0

输入文件至少包括两个不连通的牧区。

请编程找出一条连接两个不同牧场的路径,使得连上这条路径后,这个更大的新牧场有最小的直径。

输入文件

  • 第 1 行:整数 N (1 <= N <= 150)
  • 第 2 到 N+1 行:坐标 X, Y
  • 第 N+2 到 2N+1 行:邻接矩阵

输出文件

一行实数,保留六位小数。

样例

输入样例

8
10 10
15 10
20 10
15 15
20 15
30 15
25 10
30 10
01000000
10111000
01001000
01001000
01110000
00000010
00000101
00000010

输出样例

22.071068

bb2026-0117

未认领
状态
已结束
题目
7
开始时间
2026-1-17 0:00
截止时间
2026-2-22 23:59
可延期
24 小时