資料結構 基礎練習 7 10 公路村村通

2021-10-19 07:04:20 字數 1598 閱讀 7111

點此鏈結1

可參考課本(高等教育出版社 - 陳越 - 《資料結構》)p225中關於prim演算法的描述解題。

本題相對於課本描述的演算法來說,不需要考慮 父節點 (parent),只需要考慮乙個總的wpl就行。

/**

* @file road connect every village.cpp

* @author your name ([email protected])

* @brief 公路村村通 :

* @version 0.1

* @date 2021-02-06

* *

*/#include

#include

#include

#include

#include

#include

using

namespace std;

const

int intmax =

pow(2,

15)-1

;/** 解題思路:

* prim 演算法描述

* 基本變數

* 1. 路徑點集合:

* 點 - 特殊值(初始為最大值),採用帶索引的向量集

* 點表示當前索引

* 特殊值:

* 無窮 表示從未訪問過的點;

* 0 表示樹內點;

* >0 表示當前點距離樹的距離

* 2. 最終費用:只需要計算乙個費用和就行!

* (3.父節點)

* * 初始化

* v0 特殊值應為 0

* 對v0的每乙個鄰接點,需要初始化路徑點集合中的特殊值為 到v0 的 路經長

* (更新父節點為v0)

* * while(路徑集合中找不到符合要求的路徑了)

* * 判斷是否找到了每乙個點以輸出

*/int

main()

);data[p2 -1]

.push_back()

;}vector<

int>

dis(v, intmax)

;// 路經長

auto minindex =

[&dis, v]()

->

intreturn index;};

// 從 0 開始

auto sum =0;

dis[0]

=0;for

(auto

&r : data[0]

) dis[r.first]

= r.second;

while

(true)if

(count_if

(dis.

begin()

, dis.

end(),

(int in)

)!= v)

cout <<-1

<< endl;

else

cout << sum << endl;

return0;

}

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個正整數,分別是該條道路直接連通的兩個城鎮的編號以及...