lzm
who dare win.
posts - 14, comments - 29, trackbacks - 0, articles - 0
導(dǎo)航
C++博客
首頁
新隨筆
聯(lián)系
聚合
管理
<
2025年6月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(2)
給我留言
查看公開留言
查看私人留言
隨筆分類
(13)
Algorithm(10)
OJ(3)
隨筆檔案
(14)
2009年4月 (11)
2009年3月 (2)
2008年10月 (1)
收藏夾
(4)
POJ
SL(4)
ZOJ
最新隨筆
1.?poj 1094 Sorting It All Out
2.?Floyd_Warshall算法
3.?Kruskal算法
4.?Prim算法
5.?Critical Path 關(guān)鍵路徑
6.?Bellman_Ford算法 SPFA算法
7.?Dijkstra算法
8.?USP 無權(quán)最短路徑算法
9.?Topsort 拓?fù)渑判?/a>
10.?(正則表達(dá)式)是否匹配(字符串)
11.?Quicksort 快速排序
12.?poj 1024 Tester Program
13.?poj 1022 Packing Unit 4D Cubes
14.?加減乘除24
搜索
積分與排名
積分 - 39000
排名 - 544
最新評論
1.?re: Dijkstra算法
請問一下,這個路徑可以輸出成功嗎?為什么我的差不多可輸不出來呢?
prev[w] = v; 只加著一句就夠了嗎?
--毛
2.?re: (正則表達(dá)式)是否匹配(字符串)[未登錄]
呃……請問為什么我輸入A*G.C和AGTGTC,結(jié)果是dismatch呢?
--xyz
3.?re: Kruskal算法
這個程序是不是有個bug:
如果節(jié)點數(shù)量為1,邊數(shù)量為0
則應(yīng)該是有生成樹的,但是kruskal函數(shù)返回結(jié)果為false吧
個人意見
--mwxjm
4.?re: 加減乘除24
想問下~為什么tb1函數(shù)要swap交換后在執(zhí)行后有swap
--65666
5.?re: poj 1024 Tester Program[未登錄]
灰常感謝LZ,看了你的第5條那個,讓debug了3個小時的我一下就過了;
因為我的初始化原來是-1,所以釀成杯具啊。。
這bug。。汗。
--joy
閱讀排行榜
1.?Dijkstra算法(6207)
2.?Kruskal算法(4572)
3.?Prim算法(4361)
4.?(正則表達(dá)式)是否匹配(字符串)(3943)
5.?加減乘除24(2410)
評論排行榜
1.?加減乘除24(7)
2.?poj 1094 Sorting It All Out(5)
3.?Quicksort 快速排序(4)
4.?(正則表達(dá)式)是否匹配(字符串)(3)
5.?Dijkstra算法(3)
Prim算法
Posted on 2009-04-10 19:11
lzmagic
閱讀(4361)
評論(1)
編輯
收藏
引用
所屬分類:
Algorithm
/**/
/*
*
* PRIM(簡單版) 最小生成樹算法 (Minimum Spanning Tree)
* 輸入:圖g; // 有向圖或者無向圖
* 輸出:(1)最小生成樹長sum;
* (2)最小生成樹prev。
* 結(jié)構(gòu): 圖g用鄰接矩陣表示,最短邊長dist用數(shù)組表示。
* 算法:Prim算法
* 復(fù)雜度:O(|V|^2)
*/
#include
<
iostream
>
#include
<
vector
>
#include
<
list
>
#include
<
iterator
>
#include
<
algorithm
>
#include
<
numeric
>
#include
<
functional
>
#include
<
climits
>
using
namespace
std;
int
n;
//
n : 頂點個數(shù)
vector
<
vector
<
int
>
>
g;
//
g : 圖(graph)(用鄰接矩陣(adjacent matrix)表示)
vector
<
bool
>
known;
//
known : 各點是否已經(jīng)選取
vector
<
int
>
dist;
//
dist : 已選取點集到未選取點的最小邊長
vector
<
int
>
prev;
//
prev : 最小生成樹中各點的前一頂點
int
s;
//
s : 起點(start)
int
sum;
//
sum : 最小生成樹長
bool
Prim()
//
貪心算法(Greedy Algorithm)
{
known.assign(n,
false
);
dist.assign(n, INT_MAX);
prev.resize(n);
//
初始化known、dist、prev。
dist[s]
=
0
;
//
初始化起點到自身的路徑長為0。
int
i;
for
(i
=
0
; i
<
n;
++
i)
{
int
min
=
INT_MAX, v;
for
(
int
i
=
0
; i
<
n;
++
i)
if
(
!
known[i]
&&
min
>
dist[i])
min
=
dist[i], v
=
i;
//
尋找未知的最短路徑長的頂點v,
if
(min
==
INT_MAX)
break
;
//
如果找不到,退出;
known[v]
=
true
;
//
如果找到,將頂點v設(shè)為已知,
sum
+=
dist[v];
//
調(diào)整最小生成樹長
for
(
int
w
=
0
; w
<
n;
++
w)
//
遍歷所有v指向的頂點w,
if
(
!
known[w]
&&
g[v][w]
<
INT_MAX
&&
dist[w]
>
g[v][w])
dist[w]
=
g[v][w], prev[w]
=
v;
//
調(diào)整頂點w的最短路徑長dist和最短路徑的前一頂點 prev。
}
return
i
==
n;
//
如果選取頂點個數(shù)為n,成功。
}
int
main()
{
n
=
7
;
g.assign(n, vector
<
int
>
(n, INT_MAX));
g[
0
][
1
]
=
g[
1
][
0
]
=
2
; g[
0
][
2
]
=
g[
2
][
0
]
=
4
; g[
0
][
3
]
=
g[
3
][
0
]
=
1
;
g[
1
][
3
]
=
g[
3
][
1
]
=
3
; g[
1
][
4
]
=
g[
4
][
1
]
=
10
;
g[
2
][
3
]
=
g[
3
][
2
]
=
2
; g[
2
][
5
]
=
g[
5
][
2
]
=
5
;
g[
3
][
4
]
=
g[
4
][
3
]
=
7
; g[
3
][
5
]
=
g[
5
][
3
]
=
8
; g[
3
][
6
]
=
g[
6
][
3
]
=
4
;
g[
4
][
6
]
=
g[
6
][
4
]
=
6
;
g[
5
][
6
]
=
g[
6
][
5
]
=
1
;
s
=
0
;
//
起點任選
sum
=
0
;
if
(Prim())
{
cout
<<
sum
<<
endl;
for
(
int
i
=
1
; i
<
n;
++
i)
if
(i
!=
s) cout
<<
prev[i]
<<
"
->
"
<<
i
<<
endl;
}
else
{
cout
<<
"
Some vertex cann't be reached.
"
<<
endl;
}
system(
"
pause
"
);
return
0
;
}
Feedback
#
re: Prim算法
回復(fù)
更多評論
2009-04-15 12:52 by
brightcoder
good!~
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
【推薦】100%開源!大型工業(yè)跨平臺軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
Floyd_Warshall算法
Kruskal算法
Prim算法
Critical Path 關(guān)鍵路徑
Bellman_Ford算法 SPFA算法
Dijkstra算法
USP 無權(quán)最短路徑算法
Topsort 拓?fù)渑判?/a>
(正則表達(dá)式)是否匹配(字符串)
Quicksort 快速排序
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © lzmagic
久久综合给合综合久久
|
成人精品一区二区久久
|
久久天天躁夜夜躁狠狠
|
亚洲人成无码www久久久
|
国产成人精品综合久久久久
|
久久笫一福利免费导航
|
国产A三级久久精品
|
www.久久99
|
一极黄色视频久久网站
|
久久免费国产精品一区二区
|
日日狠狠久久偷偷色综合免费
|
久久超碰97人人做人人爱
|
久久福利片
|
青青青伊人色综合久久
|
中文字幕热久久久久久久
|
久久久国产一区二区三区
|
欧美熟妇另类久久久久久不卡
|
久久国产香蕉视频
|
久久亚洲欧美日本精品
|
亚洲AV日韩AV天堂久久
|
欧美久久久久久午夜精品
|
国产精品青草久久久久婷婷
|
久久成人国产精品免费软件
|
久久九九久精品国产免费直播
|
国内精品人妻无码久久久影院
|
亚洲人成无码网站久久99热国产
|
日本福利片国产午夜久久
|
国内精品久久久久影院优
|
久久午夜伦鲁片免费无码
|
国产成人精品久久
|
性欧美大战久久久久久久久
|
亚洲国产成人精品女人久久久
|
国产精久久一区二区三区
|
91精品国产9l久久久久
|
久久精品亚洲一区二区三区浴池
|
久久综合亚洲色HEZYO社区
|
无码人妻久久一区二区三区蜜桃
|
国产一区二区精品久久凹凸
|
久久精品亚洲福利
|
中文字幕无码久久精品青草
|
久久综合亚洲鲁鲁五月天
|