7 10 公路村村通 prim演算法

2021-10-07 10:55:41 字數 1218 閱讀 7806

現有村落間道路的統計資料表中,列出了有可能建設成標準公路的若干條道路的成本,求使每個村落都有公路連通所需要的最低成本。

輸入格式:

輸入資料報括城鎮數目正整數n(≤1000)和候選道路數目m(≤3n);隨後的m行對應m條道路,每行給出3個正整數,分別是該條道路直接連通的兩個城鎮的編號以及該道路改建的預算成本。為簡單起見,城鎮從1到n編號。

輸出格式:

輸出村村通需要的最低成本。如果輸入資料不足以保證暢通,則輸出−1,表示需要建設更多公路。

輸入樣例:

6151

2513

3147

1541

6223

4246

2522

6634

6351

3614

51046

8563

輸出樣例:

12
prim演算法中的思想和dijkstra演算法很像。只是在最短距離那兒用了集合s來代替dijkstra演算法中的起點。

**實現(c++):

#include

#include

#include

using

namespace std;

const

int maxv =

1010

;const

int inf =

1000000

;int g[maxv]

[maxv]

;int d[maxv]

,n,m;

//d表示頂點與集合s的最短距離

bool vis[maxv]=;

intprim()

}if(u==-1

)return-1

; vis[u]

=true

;//標記u已經被訪問過

s+= d[u]

;//將與集合s距離最小的邊加入最小生成樹

for(

int v=

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

}return s;

}int

main()

int s=

prim()

; cout

}

7 10 公路村村通

通過的 以及注釋,注釋最多的地方,是思考的最多的地方 include include includeusing namespace std define n 1005 下次不要用n來命名,不然容易和下面的n弄混,unnecessarily int f n 樹的母節點,例如節點1的母節點f 1 2,那...

7 10 公路村村通

傳送門 題目描述 現有村落間道路的統計資料表中,列出了有可能建設成標準公路的若干條道路的成本,求使每個村落都有公路連通所需要的最低成本。輸入格式 輸入資料報括城鎮數目正整數n 1000 和候選道路數目m 3n 隨後的m行對應m條道路,每行給出3個正整數,分別是該條道路直接連通的兩個城鎮的編號以及該道...

7 10 公路村村通

7 10 公路村村通 30 分 現有村落間道路的統計資料表中,列出了有可能建設成標準公路的若干條道路的成本,求使每個村落都有公路連通所需要的最低成本。輸入資料報括城鎮數目正整數n 1000 和候選道路數目m 3n 隨後的m行對應m條道路,每行給出3個正整數,分別是該條道路直接連通的兩個城鎮的編號以及...