一、最小生成树算法
稠密图使用prim算法,稀疏图使用kruskal算法
二、prim算法求最小生成树
prim和dijkstra算法类似,都是找到符合某种条件的点,然后更新。prim使用到已经构成的部分最小树所有结点中最小的距离。dijkstra算法是使用到起点最小的距离。
#include<bits/stdc++.h>
//858 prim最小生成树 (稠密图做法)
using namespace std;
const int N=210,INF=0x3f3f3f3f;
int n,m;
int g[N][N];
int dist[N];
bool st[N];
int prim()
{
int res=0;
for(int i=0;i<n;i++)
{
//找最短的边
int t=-1;
for(int j=1;j<=n;j++)
{
//只要这个点没有进入集合,或者还没初始化
//没有进入集合而且边权较少
if(!st[j]&&(t==-1||dist[t]>dist[j]))
t=j;