设为首页 加入收藏

TOP

纯C语言:贪心Prim算法生成树问题源码
2014-11-23 20:25:06 来源: 作者: 【 】 浏览:7
Tags:语言 贪心 Prim 算法 生成 问题 源码
#include 
  
   
#define MAX 100
#define MAXCOST 100000
 
int graph[MAX][MAX];
 
int Prim(int graph[MAX][MAX], int n)
{
 /* lowcost[i]记录以i为终点的边的最小权值,当lowcost[i]=0时表示终点i加入生成树 */
 int lowcost[MAX];
 
 /* mst[i]记录对应lowcost[i]的起点 */
 int mst[MAX];
 
 int i, j, min, minid, sum = 0;
 
 /* 默认选择0号节点加入生成树,从1号节点开始初始化 */
 for (i = 1; i < n; i++)
 {
  /* 最短距离初始化为其他节点到0号节点的距离 */
	  lowcost[i] = graph[0][i];
	 
  /* 标记所有节点的起点皆为默认的0号节点 */
  mst[i] = 0;
 }
 
 /* 标记0号节点加入生成树 */
 lowcost[0] = 0;
  
 /* n个节点至少需要n-1条边构成最小生成树 */
 for (i = 1; i < n; i++)
 {
  min = MAXCOST;
  minid = 0;
 
  /* 找满足条件的最小权值边的节点minid */
  for (j =1; j 
   
    >m; /* 初始化图,所有节点间距离为无穷大 */ for (i = 0; i 
    
     >n; graph[i][j] = n; graph[j][i] = n; } graph[i][i]=MAXCOST; } /* 求解最小生成树 */ cost = Prim(graph, m); cout<<"最小生成树的权值为:"<
     
      
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇纯C语言:贪心Kruskal算法生成树.. 下一篇纯C语言:谈心会议安排源码

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: