SSLOJ1119 牛的旅行 P1522

2021-10-13 02:08:33 字數 1999 閱讀 2355

農民john的農場裡有很多牧區。有的路徑連線一些特定的牧區。一片所有連通的牧區稱為乙個牧場。但是就目前而言,你能看到至少有兩個牧區不連通。這樣,農民john就有多個牧區了。

john想在農場裡新增一條路徑(注意,恰好一條)。對這條路徑有以下限制:

乙個牧場的直徑就是牧場中最遠的兩個牧區的距離(本題中所提到的所有距離指的都是最短的距離)。考慮如下的有5個牧區的牧場,牧區用「*」表示,路徑用直線表示。

這兩個牧場都在john的農場上。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 (0 <= x ,y<= 100000), 表示n個牧區的座標。注意每個 牧區的座標都是不一樣的。

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

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

810 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

首先用floyd求最短路,然後列舉2個不同牧場求直徑,再與原來的相比

code:

#include

#include

#include

#include

#include

#include

using

namespace std;

int n,x,y;

char ua;

struct f op[

151]

;bool book[

151]

;double a[

151]

[151

],dis[

151]

;int

main()

}for

(int i=

1;i<=n;i++

) a[i]

[i]=0;

for(

int j=

1;j<=n;j++)}

}}double l=

0,r=

0x7f7f7f7f

;for

(int i=

1;i<=n;i++

)for

(int j=

1;j<=n;j++

)for

(int i=

1;i<=n;i++

)for

(int j=

1;j<=n;j++

)printf

("%.6f"

,max

(l,r));

return0;

}

(p 1 和 ( p 1)的區別

內容會持續更新,有錯誤的地方歡迎指正,謝謝 例1 下面程式的輸出結果是 include void main int p 3 p n cout 0 0 p 0 1 p 2 解析 p是乙個指標,乙個指向長度為3的陣列的指標。直接在p上偏移就是行,在 p上偏移就是列。比如 p 1 等價於p 1 0 等於4...

P1加密的病歷單

總時間限制 1000ms 記憶體限制65536kb 描述 小英是藥學專業大三的學生,暑假期間獲得了去醫院藥房實習的機會。在藥房實習期間,小英紮實的專業基礎獲得了醫生的一致好評,得知小英在計算概論中取得過好成績後,主任又額外交給她一項任務,解密抗戰時期被加密過的一些傷員的名單。經過研究,小英發現了如下...

實現FLUENT的P 1輻射模型

通過udf和使用者定義輸送方程實現p 1輻射模型,在模型中,入射輻射變數g在區域內通過擴散和源項組成的方程描述 壁面上g的邊界條件等於輻射壁面熱流q的負數,在這個方程中n是外法向量。在fluent中,被控制標量的梯度的分量垂直於單元邊界 面 是主要和次要分量總和的估計。主要分量代表由單元質心定義方向...