最小生成树--Prim算法(邻接矩阵)

void Prim(Graph g,int v,*sum)
{
    //初始化三幻神
    int low_cost[max_size];
    int vist[G.numver]={0};//辅助数组代表已加入集合
    int parent[G.numver];
    if(int i =0;i<G.numver;i++)
    {
        low_cost[i] = G.edge[v][i];
        //初始化low_cost[],代表输入的起点与其他点当前的距离
    }



    for(int i=0 ;i<G.numver;i++)
    {
        int pos = 1e5;//最小权值索引
        for(int j = 0;j<G.numver;j++)//找下一个要接入的点(与已形成集合的距离最小)的索引
        {
              if(visit[j]==0&&low_cost[j]<low_cost[pos])
             {
                  pos = j;
             }
        }
        visit[j] = 1;//加入集合

        


        for(int j=0;j<G.numver;j++)
        //若刚加入的点pos,使得新集合与其他点的距离缩小,更新low_cost[],parent[]
        {   
            if(visit[j]==0&&G.Edge[j][pos]<low_cost[j];)//如果是无向图,行列可以互换
            {    
                low_cost[j] = G.Edge[j][pos];
                parent[j] = pos;//连接两点
            }
        }




                
                
        
  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值