private static void prim(int g)
while (true) }}
}}
/* 鄰接表儲存 - kruskal最小生成樹演算法 */
/*-------------------- 頂點並查集定義 --------------------*/
typedef vertex elementtype; /* 預設元素可以用非負整數表示 */
typedef vertex setname; /* 預設用根結點的下標作為集合名稱 */
typedef elementtype settype[maxvertexnum]; /* 假設集合元素下標從0開始 */
void initializevset( settype s, int n )
eset[parent] = x;}
void initializeeset( lgraph graph, edge eset )
/* 初始化為最小堆 */
for ( ecount=graph->ne/2; ecount>=0; ecount-- )
percdown( eset, ecount, graph->ne );}
int getedge( edge eset, int currentsize )
/*-------------------- 最小堆定義結束 --------------------*/
int kruskal( lgraph graph, lgraph mst )
}if ( ecount < graph->nv-1 )
totalweight = -1; /* 設定錯誤標記,表示生成樹不存在 */
return totalweight;
}
最小生成樹 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 ...