图论算法之最小生成树

本文介绍了图论中的最小生成树问题,包括Prim算法和Kruskal算法。Prim算法适用于无向连通图,从一个源点开始逐步扩展,每次选择与当前树连接的最小权值边。Kruskal算法则在所有边中依次选取最小权值边,通过并查集判断是否会形成环,确保生成的树无环。这两种算法都遵循贪婪策略。
摘要由CSDN通过智能技术生成

    最小生成树:包含图中所有顶点的无圈树(边数是V-1),且其总价值最小。

1.最小生成树(Prim算法)普里姆算法,一般针对的是无向图,而且其是连通的

思路:从一个选取的源点s出发(假设其是已知的)开始创建树,每次从剩余未知顶点中选取一个到已知顶点权值最小的顶点作为已知顶点,并连成新的边。同时在确定一个已知顶点时,要注意按需更新与其相邻的未知顶点的权值(目标最小化),且要记录造成其权值更新的顶点

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
const int N=100;
const int MAX=100000;
bool visit[N];
int d[N],path[N];
struct Node{
	int v,w;//这里w代表权值
	Node* next;
	Node(int x,int y):v(x),w(y),next(0){}//参数初始化表
};
struct Graph{
	int E,V;
	Node* Adj[N];//邻接表
};
//无向图
void CreateGraph(Graph &G){
	cin>>G.V>>G.E;
	for(int i=0;i<G.V;++i) //顶点数小于N
		G.Adj[i]=NULL;
	for(int i=0;i<G.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值