1343 例4 2 牛的旅行

2022-04-12 04:02:49 字數 1239 閱讀 9212

弗洛伊德演算法:

(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 ( r1 , r2 ) 

**:

#include#include

#include

#include

#include

#include

using

namespace

std;

intn;

char

ch;int a[151][3

];double f[151][151],maxt=1e12,minx=1e20,temp,m[151

];double dist(int x,int

y)int

main()

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

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

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

if(i!=k&&i!=j&&j!=k)

if(f[i][k]1&&f[k][j]1) //

確保連通

if(f[i][j]>f[i][k]+f[k][j])

f[i][j]=f[i][k]+f[k][j];

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

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

if(f[i][j]1&&m[i]//

(1)

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

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

if(i!=j&&f[i][j]>maxt-1

)

//(4)

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

if(m[i]>minx) //

(2)(5)

minx=m[i];

printf(

"%.6lf

",minx);

return

0;

}

1343 例4 2 牛的旅行

農民john的農場裡有很多牧區。有的路徑連線一些特定的牧區。一片所有連通的牧區稱為乙個牧場。但是就目前而言,你能看到至少有兩個牧區不連通。現在,john想在農場裡新增一條路徑 注意,恰好一條 對這條路徑有這樣的限制 乙個牧場的直徑就是牧場中最遠的兩個牧區的距離 本題中所提到的所有距離指的都是最短的距...

牛的旅行 Floyed Warshall

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

牛的旅行 題解

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