現有村落間道路的統計資料表中,列出了有可能建設成標準公路的若干條道路的成本,求使每個村落都有公路連通所需要的最低成本。
輸入格式:
輸入資料報括城鎮數目正整數n(≤1000)和候選道路數目m(≤3n);隨後的m行對應m條道路,每行給出3個正整數,分別是該條道路直接連通的兩個城鎮的編號以及該道路改建的預算成本。為簡單起見,城鎮從1到n編號。
輸出格式:
輸出村村通需要的最低成本。如果輸入資料不足以保證暢通,則輸出−1,表示需要建設更多公路。
輸入樣例:
6 15
1 2 5
1 3 3
1 4 7
1 5 4
1 6 2
2 3 4
2 4 6
2 5 2
2 6 6
3 4 6
3 5 1
3 6 1
4 5 10
4 6 8
5 6 3
輸出樣例:
12**如下:
#include
#include
using
namespace std;
const
int maxn =
100;
const
int inf =
0x3f3f3f3f
;int n, m, sum =0;
int graph[maxn]
[maxn]
;bool visit[maxn]
;int closest[maxn]
;int lowcost[maxn]
;void
prim()
for(
int i =
1; i <= n -
1; i++)}
sum +
= minn;
visit[minid]
=true
;for
(int j =
2; j <= n; j++)}
}}intmain()
prim()
; cout << sum << endl;
return0;
}
7 11 公路村村通 (30 分)
這個題就是最小生成樹演算法,倒是沒有異議,但是被自己坑了很多次qaq 自己摸出來以前的乙個模板直接對著敲上了,不細心把自己坑哭了 問題一 find函樹在找到祖先時 順便讓所有的節點都是祖先的直接兒子就好了,這樣能降低時間複雜度 問題二 判斷道路不夠的時候,既然所有的節點的直接爸爸都是祖先,只要有乙個...
5 10 公路村村通 30分
5 10 公路村村通 30分 現有村落間道路的統計資料表中,列出了有可能建設成標準公路的若干條道路的成本,求使每個村落都有公路連通所需要的最低成本。輸入資料報括城鎮數目正整數n n le 1000 1 000 和候選道路數目m m le 3n 3 n 隨後的m m行對應m m條道路,每行給出3個正整...
5 9 公路村村通 30分
5 9 公路村村通 30分 現有村落間道路的統計資料表中,列出了有可能建設成標準公路的若干條道路的成本,求使每個村落都有公路連通所需要的最低成本。輸入格式 輸入資料報括城鎮數目正整數nn le 1000 1000 和候選道路數目mm le 3n 3n 隨後的mm行對應mm條道路,每行給出3個正整數,...