国产探花免费观看_亚洲丰满少妇自慰呻吟_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****************************************************/
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乐至县| 通江县| 新安县| 晋宁县| 屏东市| 昌宁县| 砚山县| 循化| 荥阳市| 若尔盖县| 沿河| 宜君县| 娱乐| 盐边县| 沁阳市| 来安县| 静宁县| 夏津县| 新竹县| 宁阳县| 库尔勒市| 商城县| 枣阳市| 石嘴山市| 沧州市| 蓝田县| 新郑市| 任丘市| 屏山县| 邓州市| 榆树市| 民丰县| 阜阳市| 清新县| 锡林浩特市| 崇州市| 阳信县| 武乡县| 武乡县| 万宁市| 成武县|