NYOJ38布线问题 prim 最小生成树MST
2011-01-23 03:44
537 查看
http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=38
#include<iostream> #include<cstring> using namespace std; #define typec int #define V 502 const typec inf = 0x0f3f3f3f; int vis[V]; typec lowc[V]; typec cost[V][V]; typec prim(int n) { int i, j, p; typec minc, res = 0; memset(vis, 0, sizeof(vis)); vis[1] = 1; for (i=2; i<=n; i++) lowc[i] = cost[1][i]; for (i=2; i<=n; i++) { minc = inf; p = -1; for (j=1; j<=n; j++) if (1 != vis[j] && minc > lowc[j]) { minc = lowc[j]; p = j; } if (inf == minc) return -1; res += minc; vis[p] = 1; for (j=1; j<=n; j++) if (0 == vis[j] && lowc[j] > cost[p][j]) lowc[j] = cost[p][j]; } return res; } int main() { int n; cin>>n; while(n--) { int v,e; cin>>v>>e; int x,y; for (int i=0;i<e;i++) { cin>>x>>y; cin>>cost[x][y]; cost[y][x]=cost[x][y]; } int least=999; int vcost; for (int i=0;i<v;i++) { cin>>vcost; if(least>vcost) least=vcost; } least +=prim(v); cout<<least<<endl; } return 0; }
相关文章推荐
- NYOJ 38 布线问题 最小生成树 prim与Kruskal
- Prim && Kruskal 生成MST(最小生成树)及最短路径问题
- NYOJ38布线问题_最小生成树
- nyoj38布线问题(最小生成树)
- nuoj 38布线问题(prim最小生成树)
- Nyoj 38 布线问题[最小生成树(Prim&&Kruscal)]
- NYOJ 38布线问题(并查集)(最小生成树Kruskal)
- 布线问题(nyoj 38) 最小生成树
- (最小生成树问题:Prim,Kruskal)村村通公路
- 修路问题-最小生成树 Prim&Kruscal
- poj 题目1679 The Unique MST (最小生成树,次小生成树 prim)
- NYOJ 题目38 布线问题 (最小生成树 普里姆算法)
- POJ 1789 Truck History (prim解决最小生成树问题)
- HDU 5483 Nux Walpurgis 图的最小生成树中必要的边的数目 动态MST问题
- HDU 1879(最小生成树问题,Prim)
- 算法导论 最小生成树 MST-PRIM
- ZQUOJ1335最小生成树(MST)之Prim
- nyoj 38 布线问题 【最小生成树】
- NYOJ 38 布线问题(带权最小生成树,并查集)
- 数据结构与算法分析(Java语言描述)(31)—— 使用 Prim 算法求有权图的最小生成树(MST)