1343 例4 2 牛的旅行

2021-08-21 22:03:00 字數 2005 閱讀 2116

農民john的農場裡有很多牧區。有的路徑連線一些特定的牧區。一片所有連通的牧區稱為乙個牧場。但是就目前而言,你能看到至少有兩個牧區不連通。現在,john想在農場裡新增一條路徑 ( 注意,恰好一條 )。對這條路徑有這樣的限制:乙個牧場的直徑就是牧場中最遠的兩個牧區的距離 ( 本題中所提到的所有距離指的都是最短的距離 )。考慮如下的兩個牧場,圖1是有5個牧區的牧場,牧區用「*」表示,路徑用直線表示。每乙個牧區都有自己的座標:

圖1所示的牧場的直徑大約是12.07106, 最遠的兩個牧區是a和e,它們之間的最短路徑是a-b-e。

這兩個牧場都在john的農場上。john將會在兩個牧場中各選乙個牧區,然後用一條路徑連起來,使得連通後這個新的更大的牧場有最小的直徑。注意,如果兩條路徑中途相交,我們不認為它們是連通的。只有兩條路徑在同乙個牧區相交,我們才認為它們是連通的。

現在請你程式設計找出一條連線兩個不同牧場的路徑,使得連上這條路徑後,這個更大的新牧場有最小的直徑。

第 1 行:乙個整數n (1 ≤ n ≤ 150), 表示牧區數;

第 2 到 n+1 行:每行兩個整數x,y ( 0 ≤ x,y≤ 100000 ), 表示n個牧區的座標。每個牧區的座標都是不一樣的。

第 n+2 行到第 2*n+1 行:每行包括n個數字 ( 0或1 ) 表示乙個對稱鄰接矩陣。

例如,題目描述中的兩個牧場的矩陣描述如下:

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

輸入資料中至少包括兩個不連通的牧區。

只有一行,包括乙個實數,表示所求答案。數字保留六位小數。

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
這題提交有點坑 

思路:用floy求出任倆點間的最短路,然後求出每個點到所有可達的點的最大距離,記做mdis(i)

r1=max(mdis[i])

然後列舉不連通的倆點i,j,把他們連通 注意這裡是求最小值 r2

然後在比較r1,和r2 求最大值 (因為求的是直徑)

#include#define inf 0x3f3f3f3f

using namespace std;

//const double inf=0x3f3f3f3f;

double mdis[200];

int n;

int x[1001];

int y[1001];

void floy()}}

}}double f(int x1,int y1,int x2,int y2)

int main()

else}}

floy();

memset(mdis,0,sizeof(mdis));

for(int i=1;i<=n;i++)

}double minn=inf;

for(int i=1;i<=n;i++)}}

for(int i=1;i<=n;i++)

printf("%.6f\n",minn);

return 0;

}

1343 例4 2 牛的旅行

弗洛伊德演算法 1 弗洛伊德演算法求出任意兩點間的最短路,然後求出每個點到所有可到達點的最大距離,記為 m i 2 r1 max m i 3 列舉不聯通的兩個點 i j,把它們聯通,則新的直徑是m i m j dist i,j 4 r2 min m i m j dist i j 5 re max r...

牛的旅行 Floyed Warshall

原題鏈結傳送門 d es crip tion description descri ptio n農民john的農場裡有很多牧區。有的路徑連線一些特定的牧區。一片所有連通的牧區稱為乙個牧場。但是就目前而言,你能看到至少有兩個牧區不連通。這樣,農民john就有多個牧區了。john想在農場裡新增一條路徑 ...

牛的旅行 題解

農民joh njohn john 的農場裡有很多牧區。有的路徑連線一些特定的牧區。一片所有連通的牧區稱為乙個牧場。但是就目前而言,你能看到至少有兩個牧區不連通。這樣,農民joh njohn john 就有多個牧區了。j oh njohn john 想在農場裡新增一條路徑 注意,恰好一條 對這條路徑有...