普里姆算法求最小生成树c语言,输出结果只有第一步。求纠正

1173444808 2014-02-11 03:32:38
#include<stdio.h>
#define max 9
struct graph
{
int arc[max][max];
}g;
main()
{
int i,j,v,k,min;
int lowcost[max];//保存相关顶点间权值
int adj[max];//保存顶点下标
adj[0]=0;
v=max;
lowcost[0]=0;
for(i=0;i<v;i++)
{
for(j=0;j<v;j++)
{
g.arc[i][j]=0;

}
}
for(i=0;i<v;i++)
{
for(j=i+1;j<v;j++)
{
printf("%d %d\n",i,j);
scanf("%d",&g.arc[i][j]);
g.arc[j][i]=g.arc[i][j];
}
}
//建立图
for(i=0;i<v;i++)
{
for(j=0;j<v;j++)
{
printf("%d ",g.arc[i][j]);
}
printf("\n");

}
//确保图的正确性
for(i=1;i<v;i++)
{
lowcost[i]=g.arc[0][i];
adj[i]=0;
}


for(i=1;i<v;i++)
{
j=1;
k=0;
min=1000;
while(j<v)
{
if(lowcost[j]<min&&lowcost[j]!=0)
{
min=lowcost[j];
k=j;
}
j++;
}
lowcost[k]=0;
for(i=1;i<v;i++)
{
if(g.arc[k][i]<lowcost[i]&&lowcost[i]!=0)
{
lowcost[i]=g.arc[k][i];
adj[i]=k;
}
}
}
//输出结果
for(i=0;i<v;i++)
{
printf("%d ",adj[i]);
}
}
...全文
132 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
1173444808 2014-02-12
  • 打赏
  • 举报
回复
我找不出错在哪,求解释
木犀花香 2014-02-11
  • 打赏
  • 举报
回复
楼主先把代码格式化一下吧!要不看着太费劲!

69,373

社区成员

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

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