栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

纯C语言:贪心Prim算法生成树问题源码分享

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

纯C语言:贪心Prim算法生成树问题源码分享

复制代码 代码如下:
#include
#define MAX 100
#define MAXCOST 100000

int graph[MAX][MAX];

int Prim(int graph[MAX][MAX], int n)
{
 
 int lowcost[MAX];

 
 int mst[MAX];

 int i, j, min, minid, sum = 0;

 
 for (i = 1; i < n; i++)
 {
 
   lowcost[i] = graph[0][i];

 
  mst[i] = 0;
 }

 
 lowcost[0] = 0;

 
 for (i = 1; i < n; i++)
 {
  min = MAXCOST;
  minid = 0;

 
  for (j =1; j   {
  
   if (lowcost[j] < min && lowcost[j] != 0)
   {
    min = lowcost[j];
    minid = j;
   }
  }
 
  cout<<"生成数边的起点、终点及权值分别为:"<< mst[minid]+1<<"  "< 
  sum += min;

 
  lowcost[minid] = 0;

 
  for (j = 1; j < n; j++)
  {
  
   if (graph[minid][j] < lowcost[j])
   {
   
    lowcost[j] = graph[minid][j];

   
    mst[j] = minid;
   }
  }
 }
 
 return sum;
}

void main()
{
 int i, j,  m,n;
 int  cost;
 
 cout<<"请输入该图结点个数:";
 cin>>m;
 
 for (i = 0; i  {
  for (j =i+1; j   {
   cout<<"请输入结点"<   cin>>n;
   graph[i][j] = n;
   graph[j][i] = n;
  }
  graph[i][i]=MAXCOST;
 }

 
 cost = Prim(graph, m);
 cout<<"最小生成树的权值为:"<}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/65919.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号