BWM Studio

The Blow Water Machines...

原创 Prim算法生成最小树 Powerby KTL收藏

#include "stdio.h"
#define n 6
typedef struct
{
 int fromvex,endvex;
 float length;
}edge;

edge T[n-1];

float dist[n][n]={{100000,10,100000,100000,19,21},
{10,100000,5,6,100000,11},
{100000,5,100000,6,100000,100000},
{100000,6,6,100000,18,14},
{19,100000,100000,18,100000,33},
{21,11,100000,14,33,100000}};
 
void Prim(int i)
{
 int j,k,m,v;
 float min,max=100000;
 float d;
 edge e;
 v=i;
 for(j=0;j<=n-2;j++)
 {
  T[j].fromvex=v;
  if(j>=v)
  {
   T[j].endvex=j+1;
   T[j].length=dist[v][j+1];
  }
  else
  {
   T[j].endvex=j;
   T[j].length=dist[v][j];
  }
 }
 for(k=0;k<n-1;k++)
 {
  min=max;
  for(j=k;j<n-1;j++)
   if(T[j].length<min)
   {
    min=T[j].length;
    m=j;
   }
   e=T[m];
   T[m]=T[k];
   T[k]=e;
   v=T[k].endvex;
   for(j=k+1;j<n-1;j++)
   {
    d=dist[v][T[j].endvex];
    if(d<T[j].length)
    {
     T[j].length=d;
     T[j].fromvex=v;
    }
   }
 }
}

int main()
{
 int i;
 Prim(2);
 for(i=0;i<n-1;i++)
 {
  printf("%d--%.0f-->%d\n",T[i].fromvex,T[i].length,T[i].endvex);
 }
 return 0;
}

发表于 @ 2006年06月09日 15:42:00|评论(loading...)

新一篇: 第11章第15题完整代码(cpp) (Powered by biggates) | 旧一篇: 第十章第十六题 POWERBY KTL

用户操作
[即时聊天] [发私信] [加为好友]
BWM Studio
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
BWM Studio的公告
BWM Studio 新版Logo

大家抓紧时间报星火杯啊,其实没什么难度的,去年我们随便报了两个,都得奖了
文章分类
收藏
    常用Blogs
    biggates难得更新的个人主页(RSS)
    chencheng(RSS)
    人月神话(RSS)
    剑灵的世界
    推荐编程网站
    CSDN
    PKU JudgeOnline
    代码中国(RSS)
    编程爱好者
    我们的作品
    西安电子科技大学社团联合会
    存档
    软件项目交易
    Csdn Blog version 3.1a
    Copyright © BWM Studio