prim算法实现
来源:互联网 发布:淘宝总发短信怎么取消 编辑:程序博客网 时间:2024/06/09 20:54
</pre><pre>
#include<iostream>using namespace std;#define max 100#define maxcost 10000int graph[7][7]; //图 int prim(int graph[][7],int n){int lowcost[max]; ////记录以i为终点的边的最小权值,0表示 i 已加入树int mst[max];int i,j,min,minid,sum=0; for(i=2;i<=n;i++) { lowcost[i]=graph[1][i]; //最短距离初始化为其他节点到1号节点的距离 mst[i]=1; //标记所有节点的起点为第一个节点 } mst[1]=0; //1号节点加入生成树 cout<<"the prim is "<<endl; for(i=2;i<=n;i++) { min=maxcost; minid=0; for(j=2;j<=n;j++) { if(lowcost[j]<min&&lowcost[j]!=0) { min=lowcost[j]; //找权值最小的边,同时排除已标记的顶点 minid=j; } } cout<<mst[minid]<<" yu "<<minid<<" lian "<<min; //遍历与第一个节点相连的所有节点后,找到第二个节点 cout<<endl; sum+=min; lowcost[minid]=0; //第二个节点已加入,标记 for(j=2;j<=n;j++) //加入第二个节点后,迭代 { if(graph[minid][j]<lowcost[j]) { lowcost[j]=graph[minid][j]; mst[j]=minid; } } } return sum; }int main(){int m=6,n=10,i,j,k; ////7个顶点,11条边 int cost; for(i=1;i<=m;i++) for(j=1;j<=m;j++) { graph[i][j]=maxcost; } graph[1][2]=10; graph[1][4]=30; graph[1][5]=45; graph[2][1]=10; graph[2][3]=50; graph[2][5]=40; graph[2][6]=25; graph[3][2]=50; graph[3][5]=35; graph[3][6]=15; graph[4][1]=30; graph[4][6]=20; graph[5][1]=45; graph[5][2]=40; graph[5][3]=35; graph[5][6]=55; graph[6][2]=25; graph[6][3]=15; graph[6][4]=20; graph[6][5]=55; cost=prim(graph,m); cout<<"the prim cost is: "<<cost<<endl; return 0;}
运行结果:
0 0
- Prim算法实现
- Prim算法实现类
- Prim算法实现
- Prim算法的实现
- c#实现Prim算法
- Prim算法的实现
- Python 实现 Prim算法
- prim 算法实现
- matlab实现prim算法
- prim算法实现
- 邻接矩阵实现prim算法
- java实现Prim算法
- Prim算法 数组实现
- prim算法(C++实现)
- prim算法(C++实现)
- prim算法java语言实现
- 图论--Prim算法---邻接矩阵实现
- Prim算法之邻接矩阵实现
- JDBC连接MySQL
- 保持匠心,激励自己
- python speech recognition 声音识别
- SQL 备忘录
- android启动和推出实现侧滑效果
- prim算法实现
- oracle to_char函数将number转成string
- Ubuntu Kylin 14.04 下jdk安装
- 详解内网IP外网IP的关联及访问互联网原理
- Eclipse中Android项目引用其他项目时链接源码的方法
- 多边形内角和与多边形的面积公式
- Android开发--Intent
- 移动端多人视频通话软件开发(六)-- 重构
- opencv 图像的遍历