个人模板 prim 最小生成树
2017-07-01 12:31
232 查看
#include<bits/stdc++.h> using namespace std; const int Inf = 0x3f3f3f3f; const int N = 1e4 + 10; int n, m; int a ; int prim(){ int mst , low , ans = 0; mst[1] = 0; for(int i = 2; i <= n; i++){ low[i] = a[1][i]; mst[i] = 1; } for(int i = 2; i <= n; i++){ int minx = Inf, minid; for(int j = 2; j <= n; j++){ if(low[j] < minx && low[j]){ minid = j; minx = low[j]; } } ans += minx; low[minid] = 0; for(int j = 2; j <= n; j++){ if(a[minid][j] < low[j]){ low[j] = a[minid][j]; mst[j] = minid; } } } return ans; } int main(){ while(scanf("%d%d", &n, &m) == 2){ for(int i = 1; i <= n; i++){ for(int j = 1; j <= n; j++){ a[i][j] = Inf; } } for(int i = 0; i < m; i++){ int u, v, w; scanf("%d%d%d", &u, &v, &w); a[u][v] = a[v][u] = w; } printf("%d\n", prim()); } } /* 6 10 1 2 6 1 3 1 1 4 5 2 3 5 2 5 3 3 4 5 3 5 6 3 6 4 4 6 2 5 6 6 */
相关文章推荐
- 最小生成树 HDU 各种畅通工程的题,prim和kru的模板题
- Hihocoder 之 #1097 : 最小生成树一·Prim算法 (用vector二维 模拟邻接表,进行prim()生成树算法, *【模板】)
- 最小生成树prim+kruskal模板
- [kuangbin带你飞]专题六 最小生成树 (prim)(kruskal)(模板)
- poj 2485 <prim《模板》求最小生成树>
- poj 1258 【最小生成树】【prim】【纯模板】
- 最小生成树模板(prim+kruskal+prim的优化)
- 最小生成树(Prim模板)
- 最小生成树模板(prim前向星)
- hdu1162(最小生成树 prim or kruscal模板)
- 最小生成树(kruskal模版 Prim模板)
- 最小生成树(prim&kruskal)模板
- 最小生成树--prim+优先队列优化模板
- (模板题)sdut 3362 数据结构实验之图论六:村村通公路(prim求最小生成树)
- prim最小生成树模板
- 【prim + kruscal 】 最小生成树模板
- POJ 1258:Agri-Net Prim最小生成树模板题
- POJ 1258:Agri-Net Prim最小生成树模板题
- poj 1258 Agri-Net ( 最小生成树[模板题]--prim )
- HDU 1233 还是畅通工程 最小生成树 Prim模板的应用