prim算法

本文介绍了一种使用Prim算法求解最小生成树的方法。通过初始化visit数组来标记已加入生成树的顶点,并利用dis数组记录每个顶点到已加入生成树顶点集合的最短距离。算法迭代过程中不断寻找未加入生成树顶点集合中距离最近的顶点并将其加入生成树,同时更新各顶点的最短距离。
#include<iostream>
using namespace std;//记住,最小生成树是针对无向图的。
#define n 200
int visit[n]={0},dis[n]={0};//visit判断其是否已经加入生成树  dis则表示当前某点与已经加入生成树中点的最小距离
void prim;
{
count = 1;    
visit[0] = 1;
for(i = 0; i <n; ++i)
    dis[i] = edge[0][i];
    while(count < n)
    {
      lowest = Max;//所能定义的最大值.
      for(i = 0; i < n; ++i)
            if(!visit[i] && (lowest > dis[i]))
      {
       w = i;
       lowest = dis[i];   
      }
      visit[w] = 1;
      for(i = 0; i < n; ++i)
        if(!visit[i]&&(dis[i] > edge[w][i]))//在每次找出最小的后都对所有未加入生成树的结点的最短距离进行更新。
        dis[i] = edge[w][i];
       ++count;
    }   
    
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值