農夫約翰被選為他們鎮的鎮長!
他其中乙個競選承諾就是在鎮上建立起網際網路,並連線到所有的農場。
約翰已經給他的農場安排了一條高速的網路線路,他想把這條線路共享給其他農場。
約翰的農場的編號是1,其他農場的編號是 2∼n。
為了使花費最少,他希望用於連線所有的農場的光纖總長度盡可能短。
你將得到乙份各農場之間連線距離的列表,你必須找出能連線所有農場並使所用光纖最短的方案。
輸入格式
第一行包含乙個整數 n,表示農場個數。
接下來 n 行,每行包含 n 個整數,輸入乙個對角線上全是0的對稱矩陣。
其中第 x+1 行 y 列的整數表示連線農場 x 和農場 y 所需要的光纖長度。
輸出格式
輸出乙個整數,表示所需的最小光纖長度。
資料範圍
3≤n≤100
每兩個農場間的距離均是非負整數且不超過100000。
輸入樣例:
40 4 9 21
4 0 8 17
9 8 0 16
21 17 16 0
輸出樣例:
28思路
最小生成樹模板題,主要主要記錄邊的方式 只需要記錄上三角或下三角邊的情況即可
#include
using
namespace std;
const
int n=
1e4+10;
//點的個數不大於100,邊的個數則不大於10000,
int n;
int s[
120]
[120
],f[n]
;struct kla[n]
;//記錄邊的資訊
intcmp
(kl x,kl y)
intfi
(int x)
intmain()
for(
int i=
1;i<=idx;i++
) f[i]
=i;sort
(a+1
,a+1
+idx,cmp)
;//kruskal演算法
int res=0;
for(
int i=
1;i<=idx;i++
) cout
}
#include
//prim
using
namespace std;
const
int n=
1e4+10;
int n;
int s[
120]
[120
],dist[n]
,st[n]
;int
main()
int res=
0,t;
memset
(dist,
0x3f
,sizeof dist)
;dist[1]
=0;for
(int i=
0;i) cout
}
AcWing 1140 最短網路
題目鏈結 給出n個點,並給出所有點之間的距離,本質就是求一張無向連通圖的最小生成樹 從題目來看,這題的資料是保證有解的,還有按照輸入格式來看,這應該是稠密圖,使用鄰接矩陣來儲存圖 直接套用prim演算法就行了 include include using namespace std const int...
COGS 831 最短網路
輸入檔案 agrinet.in輸出檔案 agrinet.out簡單對比 時間限制 1 s 記憶體限制 128 mb 農民約翰被選為他們鎮的鎮長!他其中乙個競選承諾就是在鎮上建立起網際網路,並連線到所有的場。當然,他需要你的幫助。約翰已經給他的農場安排了一條高速的網路線路,他想把這條線路共享給其他農場...
AcWing 1140 最短網路
農夫約翰被選為他們鎮的鎮長!他其中乙個競選承諾就是在鎮上建立起網際網路,並連線到所有的農場。約翰已經給他的農場安排了一條高速的網路線路,他想把這條線路共享給其他農場。約翰的農場的編號是1,其他農場的編號是 2 n.為了使花費最少,他希望用於連線所有的農場的光纖總長度盡可能短。你將得到乙份各農場之間連...