求救,高手帮忙写一个简单的C语言程序"求图的最小生成树"

SecondSoldier 2011-06-25 01:03:29
要求:有输入输出;可以用prim算法也可以用kruskal算法,最好有注释。
写了
...全文
195 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
hackbuteer1 2011-06-25
  • 打赏
  • 举报
回复
Prim算法。。。
00.#include "stdio.h"   
01.#include "stdlib.h"
02.#define MAX 110
03.int a[MAX][MAX],p[MAX];
04.
05.int main(void)
06.{
07. int i,j,k,n,t,min,sum,new_point,x,y,d;
08. printf("请输入顶点的个数:");
09. scanf("%d",&n);
10. t=n*(n-1)/2;
11. memset(p,0,sizeof(p)); //将p数组初始化为0
12. printf("请输入每条边的起始端点、权值:\n");
13. for(i=0;i<t;i++)
14. {
15. scanf("%ld%ld%ld",&x,&y,&d); //输入每条边的权值
16. a[x][y]=a[y][x]=d;
17. }
18. p[1]=1;
19. sum=0;
20. for(k=0;k<n-1;k++)
21. {
22. min=-1;
23. for(i=1;i<=n;i++)
24. {
25. if(p[i]==1)
26. {
27. for(j=1;j<=n;j++)
28. {
29. if(p[j]==0 && (min==-1 || min>a[i][j]))
30. {
31. min=a[i][j]; //从一个顶点在U中,而另一个顶点不在U中的各条边中选择权值最小的边
32. new_point=j;
33. }
34. }
35. }
36. }
37. p[new_point]=1;
38. sum+=min;
39.
40. }
41. printf("最小生成树的权值为:%d\n",sum);
42. system("pause");
43. return 0;
44.}

69,335

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧