最小生成樹 Prim和Kruskal演算法

2022-05-03 03:15:09 字數 592 閱讀 8467

**依據書上的例子寫出來的,《資料結構與演算法分析c++描述》mark allen weiss著,張懷勇譯

prim演算法:

#include#includeusing namespace std;

const int inf=0xfffffff;

struct mark

};int main(),,,

,,,};

vectortable(7);

table[0].dv=0; //隨便從乙個節點開始,這裡從第01個節點開始

table[0].pv=-1;

//v1宣告為已知

while(1)

edge_weight(int id,int weight)

bool operator< (const edge_weight& obj)const

};class cmp }

/**列印結果**/

cout<<"最小生成樹由下列頂點和它們之間的邊組成:"<::iterator itr=eap.begin();

while(itr!=eap.end())

return 0;

}

Algorithm 最小生成樹之 Kruskal

個人觀點,較prime演算法,kurskal演算法更加的簡單,這裡我們只需要每一次去需找權值最小的那條邊就好,在這裡我們先可以利用sort進行快排,得到權值最小的map i 得到該條邊的兩個節點map i u 和map i v,這時候你需要判斷能不能用這條邊,因為最小生成樹是不能形成迴路,所以用到了...

最小生成樹 Prim

include stdio.h include stdlib.h include io.h include math.h include time.h define ok 1 define error 0 define true 1 define false 0 define maxedge 20 ...

最小生成樹 prim

演算法模型 由任意乙個頂點開始 將此頂點存入s集,剩餘頂點存入t集合 每次遍歷頂點,取一條能夠連線s與t最短邊e,直到所有頂點全部加入s include include define inf 1 30 int n,m,vis 110 low 110 int map 110 110 int init ...