#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 ...