最小生成树 prim
来源:互联网 发布:淘宝 seo 教程 编辑:程序博客网 时间:2024/05/29 19:30
#include "stdio.h"
#include "stdlib.h"
#define MAX 110
int a[MAX][MAX],p[MAX];
int main(void)
{
int i,j,k,n,t,min,sum,new_point,x,y,d;
printf("请输入顶点的个数:");
scanf("%d",&n);
t=n*(n-1)/2;
for(i=0;i<MAX;i++){
p[i] = 0;
}
//memset(p,0,sizeof(p)); //将p数组初始化为0
printf("请输入每条边的起始端点、权值:/n");
for(i=0;i<t;i++)
{
scanf("%ld%ld%ld",&x,&y,&d); //输入每条边的权值
a[x][y]=a[y][x]=d;
}
p[1]=1;
sum=0;
for(k=0;k<n-1;k++)
{
min=-1;
for(i=1;i<=n;i++)
{
if(p[i]==1)
{
for(j=1;j<=n;j++)
{
if(p[j]==0 && (min==-1 || min>a[i][j]))
{
min=a[i][j]; //从一个顶点在U中,而另一个顶点不在U中的各条边中选择权值最小的边
new_point=j;
}
}
}
}
p[new_point]=1;
sum+=min;
}
printf("最小生成树的权值为:%d/n",sum);
system("pause");
return 0;
}
#include "stdlib.h"
#define MAX 110
int a[MAX][MAX],p[MAX];
int main(void)
{
int i,j,k,n,t,min,sum,new_point,x,y,d;
printf("请输入顶点的个数:");
scanf("%d",&n);
t=n*(n-1)/2;
for(i=0;i<MAX;i++){
p[i] = 0;
}
//memset(p,0,sizeof(p)); //将p数组初始化为0
printf("请输入每条边的起始端点、权值:/n");
for(i=0;i<t;i++)
{
scanf("%ld%ld%ld",&x,&y,&d); //输入每条边的权值
a[x][y]=a[y][x]=d;
}
p[1]=1;
sum=0;
for(k=0;k<n-1;k++)
{
min=-1;
for(i=1;i<=n;i++)
{
if(p[i]==1)
{
for(j=1;j<=n;j++)
{
if(p[j]==0 && (min==-1 || min>a[i][j]))
{
min=a[i][j]; //从一个顶点在U中,而另一个顶点不在U中的各条边中选择权值最小的边
new_point=j;
}
}
}
}
p[new_point]=1;
sum+=min;
}
printf("最小生成树的权值为:%d/n",sum);
system("pause");
return 0;
}
0 0
- Prim最小生成树
- 最小生成树 prim
- 最小生成树 Prim
- 最小生成树-Prim
- Prim最小生成树
- 最小生成树 Prim
- prim最小生成树
- 最小生成树prim
- 最小生成树 prim
- prim 最小生成树
- Prim 最小生成树
- 最小生成树---Prim
- 最小生成树-prim
- 最小生成树---Prim
- 最小生成树(Prim)
- 最小生成树 -PRIM
- 最小生成树--PRIM
- 最小生成树 prim()
- iOS block传值
- 根据excel模板导出excel
- UI(base)-1
- UIScrollView无法响应touch事件解决方法
- SDUT 2879 Colorful Cupcakes (2014年山东省第五届ACM大学生程序设计竞赛)
- 最小生成树 prim
- Android6.0 wakelock深入分析
- 基因数据处理45之cloud-scale-bwamem安装(compile.pl安装有问题)
- 数据库设计(一对一、一对多、多对多)
- spring 三大基本组件
- 常用的调试器——概述篇
- Linux常用命令总结
- PHP function_exists的一个坑
- Latent semantic analysis note(LSA)