void Prim(MatGraph g,int v)
{
int lowcast[MAXV];
int MIN;
int closeset,i,j,k;
for(i=0;i<g.n;i++) //给lowcost和closest置初值
{
lowcost[i]=g.edges[v][i];
closest[i]=v;
}
for(i=1;i<g.n;i++) //找出(n-1)个顶点
{
MIN=INF;
for(j=0;j<g.n;j++) //在(V-U)中找离U最近的顶点k
if(lowcast[j] !=0 && lowcost[j]<MIN)
{
MIN=lowcost[j];
k=j; //k记录最近顶点编号
}
printf("边(%d,%d)权为:%d\n",closest[k],k,MIN); //输出最少生成树
lowcost[k]=0; //标记k已经进入U
for(j=0;j<g.n;j++) //对(V-U)中的顶点j进行调整
if(lowcost[j]!=0 && g.edges[k][j]<lowcost[j])
{
lowcost[j]=g.edges[k][j];
closest[j]=k; //修改数组lowcost和closest
}
}
}
Prim算法
最新推荐文章于 2025-12-15 22:32:00 发布
1万+

被折叠的 条评论
为什么被折叠?



