SDUT 2144 图结构练习——最小生成树
来源:互联网 发布:颜如玉 知乎 编辑:程序博客网 时间:2024/04/29 23:54
果然复习期间一个题都没敲就是手生了。
一定要记得啊:重复边保存最小的!!!
一开始还是没想到这个,最后忍无可忍动用了模版也没过才想到....
prim算法代码操作就不说了,直接上代码:
#include <stdio.h>#include <string.h>#define typec int // type of costconst typec inf = 0x3f3f3f3f; // max of cost#define V 105int vis[V],dis[V][V];typec lowc[V];typec prim(typec cost[][V], int n) // vertex: 0 ~ n-1{ int i, j, p; typec minc, res = 0; memset(vis, 0, sizeof(vis)); vis[0] = 1; for (i=1; i<n; i++) { lowc[i] = cost[0][i]; } for (i=1; i<n; i++) { minc = inf; p = -1; for (j=0; j<n; j++) { if (0 == vis[j] && minc > lowc[j]) { minc = lowc[j]; p = j; } } if (inf == minc) { return -1; // 原图不连通 } res += minc; vis[p] = 1; for (j=0; j<n; j++) { if (0 == vis[j] && lowc[j] > cost[p][j]) { lowc[j] = cost[p][j]; } } } return res;}int main(){ int m,n,i,j,x,y,w; while(scanf("%d%d",&n,&m)!=EOF) { for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(i==j) { dis[i][j]=0; } else { dis[i][j]=inf; } } } for(i=0;i<m;i++) { scanf("%d%d",&x,&y); scanf("%d",&w); if(dis[x-1][y-1]>w) { dis[y-1][x-1]=w; dis[x-1][y-1]=w; } } printf("%d\n",prim(dis,n)); }}
- SDUT 2144 图结构练习——最小生成树
- SDUT 2144 图结构练习——最小生成树
- sdut 2144 图结构练习——最小生成树
- SDUT 2144 图结构练习——最小生成树
- SDUT 2144 图结构练习——最小生成树
- SDUT 2144 图结构练习——最小生成树
- SDUT-2144 图结构练习——最小生成树
- SDUT 2144 图结构练习——最小生成树
- [SDUT](2144)图结构练习——最小生成树 ---最小生成树(图)
- sdut 2144 图结构练习——最小生成树(最小生成树)
- SDUT-图结构练习——最小生成树
- 【2144】图结构练习——最小生成树 (prim算法模板) (sdut)
- SDUT OJ 2144 图结构练习——最小生成树
- SDUT 2144 图结构练习——最小生成树 Kruskal
- SDUT 2144 图结构练习-最小生成树
- sdut oj2144 图结构练习——最小生成树(普利姆算法)
- SUDT 2144 图结构练习——最小生成树
- 2144-图结构练习——最小生成树
- 什么是java序列化,如何实现java序列化?
- svn 解决You don't have permission to access /svn/ on this server
- 遗传算法入门
- ActivityManager: java.lang.SecurityException
- Qt Style Sheet的实现(Qt Designer Integration)
- SDUT 2144 图结构练习——最小生成树
- tr命令详解
- Blackhat 2012 USA 工具以及视频迅雷快传下载
- linux的守护进程与服务-概念
- static,extends,final
- Quartz调度器
- 二分法求值
- 亿赛通破解原来是这样
- js 正则获得微博 MID