最小生成樹 Prim

2021-06-08 20:17:14 字數 1266 閱讀 4132

#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

#define maxvex 20

#define infinity 65535

typedef int status; /* status是函式的型別,其值是函式結果狀態**,如ok等 */

typedef struct

mgraph;

void createmgraph(mgraph *g)/* 構件圖 */

}g->arc[0][1]=10;

g->arc[0][5]=11;

g->arc[1][2]=18;

g->arc[1][8]=12;

g->arc[1][6]=16;

g->arc[2][8]=8;

g->arc[2][3]=22;

g->arc[3][8]=21;

g->arc[3][6]=24;

g->arc[3][7]=16;

g->arc[3][4]=20;

g->arc[4][7]=7;

g->arc[4][5]=26;

g->arc[5][6]=17;

g->arc[6][7]=19;

for(i = 0; i < g->numvertexes; i++)}}

/* prim演算法生成最小生成樹 */

void minispantree_prim(mgraph g)

for(i = 1; i < g.numvertexes; i++)

j++;

}printf("(%d, %d)\n", adjvex[k], k);/* 列印當前頂點邊中權值最小的邊 */

lowcost[k] = 0;/* 將當前頂點的權值設定為0,表示此頂點已經完成任務 */

for(j = 1; j < g.numvertexes; j++) /* 迴圈所有頂點 */}}

}int main(void)

{mgraph g;

createmgraph(&g);

minispantree_prim(g);

return 0;

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

最小生成樹 prim

思想 mst minimum spanning tree,最小生成樹 問題有兩種通用的解法,prim演算法就是其中之一,它是從點的方面考慮構建一顆mst,大致思想是 設圖g頂點集合為u,首先任意選擇圖g中的一點作為起始點a,將該點加入集合v,再從集合u v中找到另一點b使得點b到v中任意一點的權值最...