最小生成树:包含图中所有顶点的无圈树(边数是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.