初入手,苦思不得其解。後看題解,恍然大悟。
乙個牧場的直徑就是牧場中最遠的兩個牧區的距離
最小直徑 = 新道路左端點所能到達的最遠點 + 新道路長度 + 新道路右端點所能到達的最遠點
1.先來一套flody。
2.然後遍歷每個節點記錄每個點所能到達的最遠點的距離。
3.再遍歷求最小直徑。
4.又因為單個牧場直徑可能大於新牧場直徑,所以需要與兩個牧場的直徑作比較求較大值
對於第4條的證明:
如圖,新牧場最短直徑為a2->b1 = 5+10
但實際上牧場a的直徑為20,新牧場的最小直徑也應該在最後更新為20
0;k}//求每個點所能到達的最遠點的距離
for(
int i=
0;i}//求最小直徑
double ans=inf;
for(
int i=
0;i}//與牧場直徑做比較
for(
int i=
0;i)printf
("%.6lf"
,ans)
;return0;
}
p1522 牛的旅行 Cow Tours
傳送門 題目 農民 john的農場裡有很多牧區。有的路徑連線一些特定的牧區。一片所有連通的牧區稱為乙個牧場。但是就目前而言,你能看到至少有兩個牧區通過任何路徑都不連通。這樣,farmer john就有多個牧場了。輸入檔案包括牧區 它們各自的座標,還有乙個對稱鄰接矩陣。輸入檔案至少包括兩個不連通的牧區...
洛谷 P1522 牛的旅行 Cow Tours
題目描述 農民 john的農場裡有很多牧區。有的路徑連線一些特定的牧區。一片所有連通的牧區稱為乙個牧場。但是就目前而言,你能看到至少有兩個牧區通過任何路徑都不連通。這樣,farmer john就有多個牧場了。john想在牧場裡新增一條路徑 注意,恰好一條 對這條路徑有以下限制 乙個牧場的直徑就是牧場...
洛谷P1522 牛的旅行 Cow Tours
農民 john的農場裡有很多牧區。有的路徑連線一些特定的牧區。一片所有連通的牧區稱為乙個牧場。但是就目前而言,你能看到至少有兩個牧區通過任何路徑都不連通。這樣,farmer john就有多個牧場了。john想在牧場裡新增一條路徑 注意,恰好一條 對這條路徑有以下限制 乙個牧場的直徑就是牧場中最遠的兩...