prim算法(自主理解)

代码:
void Prim(MatGraph g,int v)
{
    int lowcost[MAXV];
    int closest[MAXV];
    int MIN;
    int i,j,k;
    
    for(i=0;i<g.n;i++)
    {
        lowcost[i]=g.edges[v][i];
        closest[i]=v;
    }
    
    for(i=1;i<g.n;i++)
    {
        MIN=INF;  
        for(j=0;j<g.n;j++)
        {
            if(lowcost[j]!=0&&lowcost[j]<MIN)
            {
                MIN=lowcost[j];
                k=j;
            }
        }
        printt("边为(%d,%d)权值为:%d\n",closest[k],k,MIN);
        lowcost[k]=0;
        
        for(j=0;j<g.n;j++)
        {
            if(lowcost[j]!=0&&g.edges[k][j]<lowcost[j])
            {
               lowcost[j]=g.edges[k][j];
               closest[j]=k;
            }
            
        }
    }
}


图解:

全部评论
如有错误,希望能够予以指正。同时希望有更好的理解方法可以分享给我,非常感谢
点赞
送花
回复 分享
发布于 2020-08-24 19:20

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务