最小生成樹問題(prim和kruskal演算法)

2021-09-11 05:25:30 字數 918 閱讀 4151

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