lzm
who dare win.
posts - 14, comments - 29, trackbacks - 0, articles - 0
導航
C++博客
首頁
新隨筆
聯系
聚合
管理
<
2009年4月
>
日
一
二
三
四
五
六
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
6
7
8
9
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(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 關鍵路徑
6.?Bellman_Ford算法 SPFA算法
7.?Dijkstra算法
8.?USP 無權最短路徑算法
9.?Topsort 拓撲排序
10.?(正則表達式)是否匹配(字符串)
11.?Quicksort 快速排序
12.?poj 1024 Tester Program
13.?poj 1022 Packing Unit 4D Cubes
14.?加減乘除24
搜索
積分與排名
積分 - 39004
排名 - 544
最新評論
1.?re: Dijkstra算法
請問一下,這個路徑可以輸出成功嗎?為什么我的差不多可輸不出來呢?
prev[w] = v; 只加著一句就夠了嗎?
--毛
2.?re: (正則表達式)是否匹配(字符串)[未登錄]
呃……請問為什么我輸入A*G.C和AGTGTC,結果是dismatch呢?
--xyz
3.?re: Kruskal算法
這個程序是不是有個bug:
如果節點數量為1,邊數量為0
則應該是有生成樹的,但是kruskal函數返回結果為false吧
個人意見
--mwxjm
4.?re: 加減乘除24
想問下~為什么tb1函數要swap交換后在執行后有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.?(正則表達式)是否匹配(字符串)(3944)
5.?加減乘除24(2410)
評論排行榜
1.?加減乘除24(7)
2.?poj 1094 Sorting It All Out(5)
3.?Quicksort 快速排序(4)
4.?(正則表達式)是否匹配(字符串)(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。
* 結構: 圖g用鄰接矩陣表示,最短邊長dist用數組表示。
* 算法:Prim算法
* 復雜度: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 : 頂點個數
vector
<
vector
<
int
>
>
g;
//
g : 圖(graph)(用鄰接矩陣(adjacent matrix)表示)
vector
<
bool
>
known;
//
known : 各點是否已經選取
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設為已知,
sum
+=
dist[v];
//
調整最小生成樹長
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;
//
調整頂點w的最短路徑長dist和最短路徑的前一頂點 prev。
}
return
i
==
n;
//
如果選取頂點個數為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算法
回復
更多評論
2009-04-15 12:52 by
brightcoder
good!~
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
相關文章:
Floyd_Warshall算法
Kruskal算法
Prim算法
Critical Path 關鍵路徑
Bellman_Ford算法 SPFA算法
Dijkstra算法
USP 無權最短路徑算法
Topsort 拓撲排序
(正則表達式)是否匹配(字符串)
Quicksort 快速排序
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © lzmagic
精品国产乱码久久久久久浪潮
|
精产国品久久一二三产区区别
|
潮喷大喷水系列无码久久精品
|
久久人人爽人人爽人人片AV高清
|
久久久久久国产精品无码超碰
|
成人免费网站久久久
|
A级毛片无码久久精品免费
|
四虎国产精品免费久久
|
日本高清无卡码一区二区久久
|
精品多毛少妇人妻AV免费久久
|
精品精品国产自在久久高清
|
香蕉久久久久久狠狠色
|
久久er国产精品免费观看2
|
一97日本道伊人久久综合影院
|
成人国内精品久久久久一区
|
亚洲欧洲精品成人久久曰影片
|
99久久免费国产精精品
|
成人午夜精品无码区久久
|
国产女人aaa级久久久级
|
久久精品国产网红主播
|
亚洲第一永久AV网站久久精品男人的天堂AV
|
久久久久精品国产亚洲AV无码
|
久久久久无码中
|
香蕉久久一区二区不卡无毒影院
|
色综合久久综合中文综合网
|
日本久久久久久久久久
|
久久成人18免费网站
|
色综合久久最新中文字幕
|
久久偷看各类wc女厕嘘嘘
|
人妻精品久久无码区
|
久久精品aⅴ无码中文字字幕不卡
|
精品熟女少妇aⅴ免费久久
|
久久er热视频在这里精品
|
…久久精品99久久香蕉国产
|
久久久久亚洲av无码专区
|
一本色道久久88精品综合
|
一本色道久久HEZYO无码
|
亚洲精品蜜桃久久久久久
|
色综合久久久久综合体桃花网
|
无码专区久久综合久中文字幕
|
伊人久久大香线蕉综合Av
|