Prim 最小生成树 POJ1287(模板)
来源:互联网 发布:过山车大亨3 mac 中文 编辑:程序博客网 时间:2024/06/05 14:45
题目见上一篇博客#include<cstdio>#include<cstring>#define MAXN 55#define MAXINT 0x7fffffffint graph[MAXN][MAXN]; //邻接矩阵 bool visited[MAXN]; //判断每个点是否被访问过 int prim(int n){ int lowCost[MAXN]; //最短路径集合 int i,j; for(int i=1;i<=n;++i) lowCost[i]=graph[1][i]; //从第一个点开始 memset(visited,false,sizeof(visited)); visited[1]=true; lowCost[0]=MAXINT; int sum=0; for(int i=1;i<n;++i) { int pos=0; for(j=1;j<=n;++j) { if(!visited[j]&&lowCost[pos]>lowCost[j]) pos=j; } //寻找最短路径 if(pos==0) break; sum+=lowCost[pos]; visited[pos]=true; for(j=1;j<=n;++j) { if(!visited[j]&&graph[pos][j]<lowCost[j]) lowCost[j]=graph[pos][j]; //更新 } } return sum; }int main(){ int i,j; int num,routenum; while(scanf("%d",&num)&&num){ scanf("%d",&routenum); for(i=0;i<MAXN-1;++i) //不相连的结点距离全部置为正无穷 for(int j=0;j<MAXN-1;++j) graph[i][j]=MAXINT; for(i=0;i<routenum;++i) { int a,b,len; scanf("%d%d%d",&a,&b,&len); if(graph[a][b]>len) graph[a][b]=graph[b][a]=len; } int sum=prim(num); printf("%d\n",sum); } return 0;}
阅读全文
0 0
- Prim 最小生成树 POJ1287(模板)
- POJ1287 Networking(最小生成树,Kruskal,Prim)
- poj1287 Networking 最小生成树模板题。prim+kruskal算法AC
- POJ1287-最小生成树
- 【POJ1287】Networking(最小生成树)
- 最小生成树(Prim模板)
- 最小生成树(prim算法模板)
- 最小生成树(prim&kruskal)模板
- 最小生成树-Prim算法(模板)
- Prim算法模板(最小生成树)
- 最小生成树(prim算法)模板
- 最小生成树Prim模板
- prim最小生成树模板
- 最小生成树Prim模板
- 模板--最小生成树【prim】
- 最小生成树-prim 模板
- 最小生成树prim模板
- POJ1287 Networking(最小生成树)
- C++学习之路(23)---C++ explicit关键字详解
- [PHP] Deprecated: Methods with the same name as their class will not be constructor...
- memcached三种客户端的使用
- 积攒了这么多技术干货_总有一款适合你
- pod install Abort trap: 6
- Prim 最小生成树 POJ1287(模板)
- 原码, 反码, 补码 详解
- ETH挖矿软件之矿工队长
- QT5.7 Windows下发布release程序
- 利用Angular实现多团队模块化SPA开发框架
- 关于IDea的内存设置
- 方差、标准差、均方差、均方误差区别总结
- 调节当前页面的屏幕亮度
- [DevExpress使用随笔]之NavBarControl控件(一)