最小生成树prim算法
来源:互联网 发布:扁皮弹弓皮筋长度算法 编辑:程序博客网 时间:2024/06/15 20:49
无向图
最小生成树
/*最小生成树prim算法*/#include <stdio.h>#define vnum 100#define MAX_INT 32767typedef struct graph{ int vexnum,arcnum; /*顶点数、边数*/ int edge[vnum][vnum]; /*邻接矩阵*/}Graph;/*G表示图的邻接矩阵的存储变量,V表示起始顶点下标*/void Prim(Graph G,int v){ int lowcost[vnum]; /*顶点i是否在u中*/ int min; int closest[vnum],i,j,k; for(i=0;i<G.vexnum;i++) /*给lowcost[]和closest[]置初值*/ { lowcost[i]=G.edge[v][i]; closest[i]=v; } for(i=1;i<G.vexnum;i++) /*找出n-1个顶点*/ { min=MAX_INT; for(j=0;j<G.vexnum;j++) /*在(v-u)中找出离u最近的顶点k*/ if(lowcost[j]!=0 && lowcost[j]<min) { min=lowcost[j]; k=j; /*k记录最近顶点的编号*/ } printf("边(%d,%d)权为:%d\n",closest[k],k,min); lowcost[k]=0; /*标记k已经加入u*/ for(j=1;j<G.vexnum;j++) /*修改数组lowcost和closest*/ if(G.edge[k][j]!=0 && G.edge[k][j]<lowcost[j]) { lowcost[j]=G.edge[k][j]; closest[j]=k; } }}main(){ Graph G; int a,b,c,i,j; printf("请输入顶点个数和边的条数:\n"); scanf("%d %d",&G.vexnum,&G.arcnum); for(i=0;i<G.vexnum;i++) for(j=0;j<G.vexnum;j++) G.edge[i][j]=MAX_INT; for(i=0;i<G.arcnum;i++) { printf("第%d条边:",i+1); scanf("%d %d %d",&a,&b,&c); G.edge[a][b]=c; G.edge[b][a]=c; } printf("最小生成树\n"); Prim(G,0);}
编译结果
阅读全文
0 0
- Prim最小生成树算法
- 最小生成树Prim算法
- 最小生成树Prim算法
- 最小生成树----Prim算法
- 最小生成树Prim算法
- Prim 最小生成树算法
- 最小生成树:Prim算法
- Prim算法 ----最小生成树
- 最小生成树-prim 算法
- 最小生成树(prim算法)
- 最小生成树 prim算法
- 最小生成树 prim算法
- Prim最小生成树算法
- 最小生成树prim算法
- 最小生成树--prim算法
- 最小生成树Prim算法
- 最小生成树(Prim算法)
- 最小生成树----Prim算法
- 爬虫 Python爬虫利器二之Beautiful Soup的用法
- activiti使用java代码生成数据表
- Java String
- php中序列化与反序列化
- Java多线程的简单实现以及耗时操作的效率对比
- 最小生成树prim算法
- MTK平台 电池驱动相关
- 服务器可能遭受攻击汇总
- PHP中htmlentities和htmlspecialchars的区别
- canvas获取base64图片并上传php服务器
- Java基础教程7-基本数学运算
- lnmp详细编译安装教程
- 学习优化需要什么样的心态
- jdbc连接数据库的三种方式