国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

圖結構練習——最小生成樹(Prim算法)

2019-11-08 01:54:23
字體:
來源:轉載
供稿:網友

Think: 修建路 的問題, 對 PRim算法還是不怎么理解。。加油吧。。。

Problem Description 有n個城市,其中有些城市之間可以修建公路,修建不同的公路費用是不同的。現在我們想知道,最少花多少錢修公路可以將所有的城市連在一起,使在任意一城市出發,可以到達其他任意的城市。

Input 輸入包含多組數據,格式如下。 第一行包括兩個整數n m,代表城市個數和可以修建的公路個數。(n <= 100, m <=10000) 剩下m行每行3個正整數a b c,代表城市a 和城市b之間可以修建一條公路,代價為c。

Output 每組輸出占一行,僅輸出最小花費。 Example Input

3 2 1 2 1 1 3 1 1 0

Example Output

2 0

#include<bits/stdc++.h>#define MAX 0x3f3f3f;using namespace std;int Map[1050][1050];int dis[1050];int vis[1050];int Prim (int n);int main() { int n, m; int i, j; int a, b, c; while (cin >> n >> m) { memset(vis, 0, sizeof(vis)); for (i = 1;i <= n;i ++) { for (j = 1;j <= n;j ++) { if (i == j) Map[i][j] = 0; else Map[i][j] = MAX; } } for (i = 1;i <= m;i ++) { cin >> a >> b >> c; if (Map[a][b] > c) { Map[a][b] = Map[b][a] = c; } } int ans = Prim(n); cout << ans << endl; } return 0; } int Prim (int n) { int i, j, t; int sum = 0; vis[0] = 1; for (i = 1;i <= n;i ++) { for (j = 1;j <= n;j ++) { dis[i] = Map[i][j]; } } for (i = 1;i <= n;i ++) { t = i; int MIN = MAX; for (j = 1;j <= n;j ++) { if (MIN > dis[j] && !vis[j]) { MIN = dis[j]; t = j; } } sum = sum + MIN; vis[t] = 1; for (j = 1;j <= n;j ++) { if (Map[t][j] < dis[j]&&!vis[j]) { dis[j] = Map[t][j]; } } } return sum; }/***************************************************User name: Result: AcceptedTake time: 40msTake Memory: 568KBSubmit time: 2017-02-20 15:35:03****************************************************/
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 达孜县| 秦皇岛市| 六枝特区| 加查县| 孟连| 德州市| 江都市| 宜良县| 宾阳县| 金乡县| 延川县| 大化| 定西市| 铜川市| 桦川县| 文安县| 宽城| 兴宁市| 玛沁县| 漯河市| 曲麻莱县| 延寿县| 上蔡县| 揭阳市| 嘉祥县| 白山市| 巴彦县| 延庆县| 涟水县| 甘肃省| 沙田区| 卢氏县| 陵川县| 新丰县| 和林格尔县| 隆昌县| 延庆县| 石林| 上栗县| 广东省| 桃源县|