最小生成树之Prim算法(模板)
来源:互联网 发布:淘宝有图评价 编辑:程序博客网 时间:2024/05/17 00:51
转载请注明出处:http://blog.csdn.net/u012860063
直接上代码:
// POJ 1258
#include <stdio.h>#include <string.h>#define INF 0x3f3f3f3f#define MAXN 517//创建m二维数组储存图表,low数组记录每2个点间最小权值,visited数组标记某点是否已访问int m[MAXN][MAXN], low[MAXN], visited[MAXN];int n;int prim( ){ int i, j; int pos, minn, result=0; memset(visited,0,sizeof(visited)); visited[1] = 1; pos = 1; //从某点开始,分别标记和记录该点 for(i = 1; i <= n; i++) //第一次给low数组赋值 if(i != pos) low[i] = m[pos][i]; else low[i] = 0; for(i = 1; i < n; i++) //再运行n-1次 { minn = INF; //找出最小权值并记录位置 for(j=1; j<=n; j++) { if(visited[j]==0 && minn>low[j]) { minn = low[j]; pos = j; } } result += minn; //最小权值累加 visited[pos] = 1; //标记该点 for(j = 1; j <= n; j++) //更新权值 if(visited[j]==0 && low[j]>m[pos][j]) low[j] = m[pos][j]; } return result;}int main(){ int i,j,ans; while(scanf("%d",&n)!=EOF) { memset(m,INF,sizeof(m)); //所有权值初始化为最大 for(i = 1; i <= n; i++) for(j = 1; j <= n; j++) { scanf("%d",&m[i][j]); } ans=prim( ); printf("%d\n",ans); } return 0;}
1 1
- 最小生成树之Prim算法(模板)
- 最小生成树(prim算法模板)
- 最小生成树-Prim算法(模板)
- Prim算法模板(最小生成树)
- 最小生成树(prim算法)模板
- 最小生成树Prim算法模板
- 最小生成树-prim算法模板
- hdu1233最小生成树 prim算法模板
- prim算法模板—最小生成树
- prim算法模板 (最小生成树)
- 【模板】最小生成树prim算法
- 最小生成树Prim算法模板
- 最小生成树Prim算法模板
- 最小生成树Prim算法模板
- [模板]最小生成树 prim算法
- 贪心算法基础之最小生成树prim算法 51nod prim模板
- 最小生成树(prim算法模板,选点,oj2144)
- 【最小生成树】(模板-prim算法)poj 1258
- Android应用程序的编译和打包
- ie6下的js调试工具companion.js
- C3P0数据库连接池【JAVA】-oracle数据库为例
- 7.解决谷歌的SDK更新失败问题。
- linux学习总结7
- 最小生成树之Prim算法(模板)
- 【机房重构】方法调用---再小也要理解
- NYOJ-60谁得了最高奖学金
- EditPlus 3注册 激活码
- go开发环境配置
- ASP.NET 网站发布步骤
- 【Unity 3D】学习笔记二十一:unity游戏脚本(一)
- 乘法和逆矩阵
- Jenkins