現有村落間道路的統計資料表中,列出了有可能建設成標準公路的若干條道路的成本,求使每個村落都有公路連通所需要的最低成本。
輸入資料報括城鎮數目正整數n(≤1000)和候選道路數目m(≤3n);隨後的m行對應m條道路,每行給出3個正整數,分別是該條道路直接連通的兩個城鎮的編號以及該道路改建的預算成本。為簡單起見,城鎮從1到n編號。
輸出村村通需要的最低成本。如果輸入資料不足以保證暢通,則輸出−1,表示需要建設更多公路。
6151
2513
3147
1541
6223
4246
2522
6634
6351
3614
51046
8563
12
利用prim演算法實現最小生成樹即可ac
#include
using
namespace std;
int ls[
1005][
1005];
intmain()
;//dist[x] 表示x節點到已有生成樹的最短距離
for(
int i =
0; i < m; i++
)for
(int i =
1; i <= n; i++
)//記錄每個點到1的最短距離
dist[i]
= ls[1]
[i];
dist[1]
=0;//訪問過的點設為0
while(1
)bool flag =
true
;for
(int i =
1; i <=n; i++
)//如果每個節點的dist值都為零,則生成樹成功,否則表明有點不連通
if(dist[i]
) flag =
false;if
(flag)
cout
cout<<-1
}
PTA 公路村村通 (30 分)
7 3 公路村村通 30 分 現有村落間道路的統計資料表中,列出了有可能建設成標準公路的若干條道路的成本,求使每個村落都有公路連通所需要的最低成本。輸入格式 輸入資料報括城鎮數目正整數n 1000 和候選道路數目m 3n 隨後的m行對應m條道路,每行給出3個正整數,分別是該條道路直接連通的兩個城鎮的...
PTA 7 10 公路村村通 30分
現有村落間道路的統計資料表中,列出了有可能建設成標準公路的若干條道路的成本,求使每個村落都有公路連通所需要的最低成本。輸入資料報括城鎮數目正整數n 1000 和候選道路數目m 3n 隨後的m行對應m條道路,每行給出3個正整數,分別是該條道路直接連通的兩個城鎮的編號以及該道路改建的預算成本。為簡單起見...
5 10 公路村村通 30分
5 10 公路村村通 30分 現有村落間道路的統計資料表中,列出了有可能建設成標準公路的若干條道路的成本,求使每個村落都有公路連通所需要的最低成本。輸入資料報括城鎮數目正整數n n le 1000 1 000 和候選道路數目m m le 3n 3 n 隨後的m m行對應m m條道路,每行給出3個正整...