Prim演算法求最小生成樹

2021-08-07 13:18:25 字數 758 閱讀 4187

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+=minc;

vis[p]=true;//p點已訪問

for(int j=0; jif(!vis[j]&&lowc[j]>cost[p][j])

lowc[j]=cost[p][j];//p點到各點的距離

}return ans;

}int main()

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演算法求最小生成樹

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

Prim演算法求最小生成樹

void prim matgraph g,int v for i 1 i 找出n 1個頂點 printf 邊 d,d 權為 d n closest k k,min lowcost k 0 標記k已經加入u for j 0 j 修改陣列lowcost和closest if g.edges k j 0 ...