最小生成树 ———prim算法 poj 1258
来源:互联网 发布:java 获取本地路径 编辑:程序博客网 时间:2024/06/12 19:21
prim算法:所有点组成了一个集合 (笔者称之为全集),先从全集中选出一个点pos放入一个集合(笔者称之为 结果集 ),用一个数组记录pos到剩下点的距离(即 结果集到剩余点的距离),选出最短距离所对应的另一个点 D 加入到结果集中 ,将pos 更新为 D,此时遍历图,若D到剩余点的距离小于low数组中对应的值 ,则更新low数组,再重复选取结果集到剩余点的最短距离 更新low数组,poj 1258 点击打开链接
代码如下:
#include<stdio.h>#include<string.h>int map[120][120],visit[120],low[1100];int n,ans;void prim(){ int pos,i,j; pos=1; visit[pos]=1; for(i=1; i<=n; i++)//第一次对low数组赋值 if(i!=pos) low[i]=map[pos][i]; for(i=1; i<n; i++) { int min=999999; for(j=1; j<=n; j++) if(visit[j]==0&&min>low[j]) { min=low[j]; pos=j; } //printf("**%d\n",min); ans+=min; visit[pos]=1; for(j=1; j<=n; j++)//更新low数组; if(visit[j]==0&&map[pos][j]<low[j]) low[j]=map[pos][j]; }}int main(){ int i,j,tem; while(scanf("%d",&n)!=EOF) { memset(map,9999999,sizeof(map)); memset(visit,0,sizeof(visit)); for(i=1; i<=n; i++) for(j=1; j<=n; j++) { scanf("%d",&tem); map[i][j]=map[j][i]=tem; } ans=0; prim(); printf("%d\n",ans); } return 0;}
0 0
- 最小生成树 ———prim算法 poj 1258
- POJ-1258 最小生成树 prim算法
- POJ 1258 -- 最小生成树(prim算法)
- 最小生成树——prim算法
- 最小生成树——prim算法
- 最小生成树算法——Prim
- 最小生成树——Prim算法
- 最小生成树——Prim算法
- 最小生成树——Prim算法
- prim算法模板—最小生成树
- 最小生成树—prim算法
- 最小生成树—Prim算法
- 算法——最小生成树:Kruskal算法、Prim算法
- 最小生成树算法—Kruskal算法和Prim算法
- Prim — 最小生成树
- POJ 1789 ——Truck History 最小生成树 prim算法
- POJ 2395 Out of Hay(最小生成树—prim算法记录最大边)
- 构造最小生成树的算法——Prim算法
- 位运算以及用途详解
- Eigen 3.2.2出现了
- 【参考】assert 断言
- UIView扩展,很实用
- 到底什么是VPN和究竟为什么它要
- 最小生成树 ———prim算法 poj 1258
- 如何将自己的私有MIB放在MIB Broswer下浏览
- Value和ValueVector的区别
- java数据转json数据
- nginx图片、css、js缓存
- navicat 结合快捷键 非常好用
- CoreData功能初窥
- HDOJ 1253 胜利大逃亡
- 第一范式,第二范式,第三范式