prim算法的思想是,给定一个集合 setX,初始为{ 1 },也就是只包含第一个顶点,和另一个集合 setY, 初始为 V - { 1 },找出一条权重最小的边(x,y),x 属于 setX, y 属于 setY,然后将这条边加入到最小支撑树中,同时 setX + { y }, setY - { y }。V 表示所有顶点集合。
代码
#include <iostream>
#include <vector>
#include <set>
using namespace std;
unsigned int MAX=0x7fffffff; // 代表此两顶点之间没有边
class Node
{
public:
Node()=default;
Node(unsigned int val,unsigned int w=0):value(val),weight(w),next(nullptr){}
unsigned int value;
unsigned int weight;
Node *next;
};
struct Bian
{
public:
Bian()=default;
Bian(unsigned int l,unsigned int r,unsigned int w=0):left(l),right(r),weight(w){}
unsigned