Prime算法的代码

本文介绍了一种使用Prime算法求解最小生成树的方法,该算法在无向图上的时间复杂度为O(V^2),对于稀疏图可优化为O(ElogV)。代码遵循《挑战程序设计》一书的风格,主要分为更新节点距离和寻找最短距离节点两部分。Prime算法策略是逐步将未在树中的节点加入到已构建的树中,每次选择与已有树集合距离最短的节点。
摘要由CSDN通过智能技术生成

下面的代码在hiho上测试通过,题目的名字是:最小生成树--Prime算法

该方法的时间复杂度是O(V^2),V是图中的节点数,这里的图是无向图,且连通。

对于稀疏图来说,时间复杂度会变为O(ElogV),E为边数。

下面的代码与挑战程序设计一书中的风格很像,分为两部分:

1.更新结点距离

2.寻找最短距离结点

Prime算法的原理:

将所有结点分为两部分:已在树中和未在树中

从未在树中的结点集合里找一个到已在树中集合距离最短的结点,这里距离指的是相连两点的权值,并将该结点并入已在树中集合,然后用新并入的点更新前面说的距离,然后循环。

#include<stdio.h>
#include<algorithm>

using namespace std;


const int N_MAX=1000;
int graph[N_MAX][N_MAX];
bool flag[N_MAX];
int dis[N_MAX];

int N;
 
void init()
{
	fill(dis,d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值