熱帶島嶼拉格里山的長老有問題。幾年前,大量的外國援助資金被用於修建村莊之間的額外道路。但是叢林無情地超過了道路,因此龐大的道路網路成本太高,無法維護。長老理事會必須選擇停止維護一些道路。左邊的地圖顯示了現在使用的所有道路以及每月維護這些道路的費用。當然,即使路線不象以前那樣短,但在所有維修道路上的村莊之間,都需要有某種辦法。首席長老想告訴長老理事會,他們每個月能花多少錢在行政管理系統中,以維護連線所有村莊的道路。這些村莊在上面的地圖上標著a到i。右邊的地圖顯示了最便宜的道路,每月216個aacms。你的任務是編寫乙個程式來解決這些問題。
input
輸入由一到100個資料集組成,最後一行只包含0。每個資料集開始時只包含乙個數字n,即村莊數,1output
每個資料集的輸出為每一行乙個整數:每個月用於維護連線所有村莊的公路系統的最低成本。警告:審查每一組可能的道路的蠻力解決方案不會在一分鐘內完成。
sample input
9a 2 b 12 i 25
b 3 c 10 h 40 i 8
c 2 d 18 g 55
d 1 e 44
e 2 f 60 g 38
f 0g 1 h 35
h 1 i 35
3a 2 b 10 c 40
b 1 c 20
0sample output
21630
最小生成樹問題,可以選擇使用prim,直接套用prim模板。
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
const
int inf=
0x3f3f3f3f
;const
int max=30;
int m[max]
[max]
,d[max]
;int n;
bool f[max]
;int
fun()}
return num;
}int
main()
}for
(int i=
1;icout<<
fun(
)<
}return0;
}
最小生成樹 次小生成樹
一 最小生成樹 說到生成樹首先要解釋一下樹,樹是乙個聯通的無向無環圖,多棵樹的集合則被稱為森林。因此,樹具有許多性質 1.兩點之間的路徑是唯一的。2.邊數等於點數減一。3.連線任意兩點都會生成乙個環。對於乙個無向聯通圖g的子圖,如果它包含g的所有點,則它被稱為g的生成樹,而各邊權和最小的生成樹則被稱...
最小生成樹
package 圖 最小生成樹是用最少的邊吧把所有的節點連線起來。於是和圖的深度優先搜素差不多。class stack public void push int key public int pop 檢視棧頂的元素 public int peek public boolean isempty cla...
最小生成樹
define max vertex num 20 最大頂點數 typedef int adjmatrix max vertex num max vertex num 鄰接矩陣型別 typedef char vertextype typedef struct mgraph struct dnodecl...