最小生成樹Prim 加點法

2021-10-10 22:57:11 字數 1149 閱讀 1468

#include

#include

#define inf 1000

using

namespace std;

struct shortedge

;int arc[

100]

[100];

int vexnum;

int arcnum=0;

shortedge shortedge[

100]

;void

input()

}}intminedge()

}return index;

}/**

* prim演算法 :從待選點集裡找到裡已選點集中的最近的點加入已點選集

* 給定出發點start

* 找出start 與vexnum個頂點的距離存入shortedge陣列,並標記start節點已經被訪問(加入已選點集)

shortedge[i] :表示以shortedge[i].adjvex和i為頂點的邊; shortedge[i] .lowcost==0表示已經加入已選集合

* 然後從shortedge陣列中找到在未訪問頂點裡距離已選點集最近的點的下標(即裡找到最短邊的下標minindex)

* 輸出該最短邊的資訊

* 更新shortedge陣列(因為加入minindex的點可能會拉近已選點集到未選點集的距離)**/

void

prim

(int start)

shortedge[start]

.lowcost=0;

//vexnum個頂點,最小生成樹有vexnum-1條邊

for(

int i=

0; i1; i++)}

}}intmain()

/**6

0 34 46 0 0 19

34 0 0 0 12 0

46 0 0 17 0 25

0 0 17 0 38 25

0 12 0 38 0 26

19 0 25 25 26 0

5-----0 19

5-----2 25

2-----3 17

5-----4 26

4-----1 12

*/

最小生成樹 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 ...

最小生成樹 PRIM

這個是有關普利姆的演算法,從乙個點出發,找出與這個點相連的所有點的對應的權值最小的那個,然後再把這個點從集合中劃掉。模板如下 include include define inf 0xfffff define max 2005 using namespace std int map max max ...