HDU1863 最小生成树 prim模版
来源:互联网 发布:大人认字软件 编辑:程序博客网 时间:2024/05/20 08:27
prim模版
#include<stdio.h>#include<string.h>#define MAX 0x3f3f3f3fint logo[101];int map[101][101];int dis[101];int n;int prim(){ int i,j,now; int sum=0; for(i=1; i<=n; i++) { dis[i]=MAX; //dis初始化为最大值 logo[i]=0; //logo标记数组初始化为0 } for(i=1; i<=n; i++) { dis[i]=map[1][i]; //以1为起点,能与1连通的用map[1][i]覆盖dis[i]的MAX } dis[1]=0; //与起点的距离为0 logo[1]=1; //1已经访问过,标记 for(i=1;i<=n;i++) { now=MAX; //now记录最短距离的序号 int min=MAX; //min记录最短距离的值 for(j=1; j<=n; j++) { if(logo[j]==0&&dis[j]<min) //j未访问且之比当前最小值小 { now=j; min=dis[j]; //更新最短距离的序号和值 } } if(now==MAX) //没被刷新 break; //跳出循环 logo[now]=1; //访问now sum+=min; //计入和sum for(j=1; j<=n; j++) { if(logo[j]==0&&dis[j]>map[now][j]) //将now加入已访问点,更新与now连通的 dis[j]=map[now][j]; } } if(i<n) //中途break printf("?\n"); else printf("%d\n",sum); return 0;}int main(){ int a,b,c,d,m,i; while(scanf("%d%d",&m,&n)) { if(m==0) break; memset(map,0x3f3f3f3f,sizeof(map)); for(i=0; i<m; i++) { scanf("%d%d%d",&a,&b,&c); //起点a,终点a,权值c if(c<map[a][b]) //出现ab连通有两条路,只记录短的那条 map[a][b]=map[b][a]=c; } prim(); }}
阅读全文
0 0
- HDU1863 最小生成树 prim模版
- HDU1863---最小生成树(prim算法)
- HDU1863 畅通工程 【最小生成树Prim】
- hdu1863(最小生成树--Prim算法)
- hdu1863 畅通工程(最小生成树之prim)
- Kruskal & Prim 最小生成树HDU1863 畅通工程
- HDU1863 - 畅通工程 Prim最小生成树算法
- 最小生成树---->prim算法的应用 hdu1863
- HDU1863(最小生成树)
- HDU1863最小生成树
- HDU1863(最小生成树)
- hdu1863 最小生成树基础
- HDU1863(最小生成树)
- hdu1863 (最小生成树)
- HDU1863:畅通工程2(最小生成树Kruskal算法与Prim算法)
- POJ 1258 prim模版求最小生成树
- 最小生成树MST(Prim/Kruskal模版)
- 最小生成树模版题Prim——修建道路
- 一些期刊的影响因子
- graph cut
- android studio界面初识
- IntelliJ IDEA中关于get、set方法Code template的编辑,用于修改get、set注释
- BZOJ 2142 浅谈LuCas EXtra拓展卢卡斯定理解合数组合式
- HDU1863 最小生成树 prim模版
- 图中的最小生成树——Kruskal算法
- 布隆过滤器浅解
- doctype解析
- Keepalived安装及配置实现虚拟IP与HDFS Active Namenode同步
- Java for循环和foreach循环的性能比较
- bzoj 2423 [HAOI2010]最长公共子序列 动态规划
- Java的初始化块
- 一位资深程序员大牛给予Java初学者的学习路线建议