prim最小生成樹

2021-08-24 18:18:19 字數 1238 閱讀 7452

#include #include #include #include #include #include using std::cout;

using std::endl;

using std::vector;

using std::string;

class solution

dis[0] = 0;

book[0] = true;//0號頂點擊中

int count = 1;//記錄已經找到了多少個頂點,初值為1,表示頂點0已經是找到的

int sum = 0;//記錄路徑和

while(count < n)

}book[minv] = true;

sum += minw;

for(int i = 1;i < n;++i)}}

++count;

}return sum;

}};vector> creatematrixfromcin()

//構造矩陣

vector> matrix(n,vector(n,int_max));

for(int i = 0 ;i < n;++i)

//讀邊資訊

for(int k = 0;k < m;++k)

matrix[e1-sid][e2-sid] = w;//sid是頂點編號是從0開始還是從1開始

matrix[e2-sid][e1-sid] = w;//無向圖,所以兩個方向都要儲存

} return matrix;

}void test()

int main()

//輸入資料1

//頂點編號從0開始

#if 0

6 10

0 1 4

0 4 1

0 5 2

1 2 6

1 5 3

2 3 6

2 5 5

3 4 4

3 5 5

4 5 3

#endif

//輸入結果應為:15

//輸入資料2

//頂點編號從1開始

#if 0

6 92 4 11

3 5 13

4 6 3

5 6 4

2 3 6

4 5 7

1 2 1

3 4 9

1 3 2

#endif

//輸出結果應為:19

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