普里姆算法求最小生成树c语言,输出结果只有第一步。求纠正
#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]);
}
}