prim求最小生成樹

2021-08-15 04:29:05 字數 844 閱讀 7544

劉陽小同學的筆記

#include #include #include #include #include #include #include #include #include #include #include using namespace std;

#define mem(a,b) memset(a,b,sizeof(a))

typedef long long ll;

const int inf = 0x3f3f3f3f; // 正無窮(可以用memset)

const int maxn = 1e5+5;

struct connect ;

vectoradj[maxn]; // adj陣列存連線情況

int n,dis[maxn]; // dis存每個頂點到已生成樹的權值

bool vis[maxn] = ; // vis儲存每個頂點的訪問情況

int res = 0; // 結果(最小生成樹的權值之和)

// prim演算法求最小生成樹,輸入x為起始點

void prim (int x)

}vis[u] = 1; // 將篩選出的此點標記

res += min; // 將此點到已生成樹的最小權值加入到結果中

// 生成樹已更新

Prim演算法求最小生成樹

本文參考 google 資料結構 c語言 prim演算法,求最小生成樹 include include 最小生成樹prim define max 65535 using namespace std struct graph int prim graph g flag 0 1 將0號結點加入集合s i...

Prim演算法求最小生成樹

cost i j 存i和j之間的距離,vis i 記錄i點是否被訪問,lowc j 存所有與j點連線的邊的最小的權值。每次找最小的lowc j 然後。最小生成樹 int prim int cost maxn int n 點是0 n 1 if minc inf return 1 原圖不連通 ans m...

Prim演算法求最小生成樹

樸素prim演算法 1 距離初始化成正無窮 2 n次迭代 找到集合外距離最近的點,賦值給t 3 用t更新其他點到集合的距離 跟狄傑斯塔拉不一樣,狄傑斯塔拉是跟原點的距離 點與集合所有點距離最短的點 st t true 給定乙個n個點m條邊的無向圖,圖中可能存在重邊和自環,邊權可能為負數。求最小生成樹...