lzm
who dare win.
posts - 14, comments - 29, trackbacks - 0, articles - 0
導(dǎo)航
C++博客
首頁(yè)
新隨筆
聯(lián)系
聚合
管理
<
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
常用鏈接
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
(2)
給我留言
查看公開(kāi)留言
查看私人留言
隨筆分類(lèi)
(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 無(wú)權(quán)最短路徑算法
9.?Topsort 拓?fù)渑判?/a>
10.?(正則表達(dá)式)是否匹配(字符串)
11.?Quicksort 快速排序
12.?poj 1024 Tester Program
13.?poj 1022 Packing Unit 4D Cubes
14.?加減乘除24
搜索
積分與排名
積分 - 39173
排名 - 544
最新評(píng)論
1.?re: Dijkstra算法
請(qǐng)問(wèn)一下,這個(gè)路徑可以輸出成功嗎?為什么我的差不多可輸不出來(lái)呢?
prev[w] = v; 只加著一句就夠了嗎?
--毛
2.?re: (正則表達(dá)式)是否匹配(字符串)[未登錄](méi)
呃……請(qǐng)問(wèn)為什么我輸入A*G.C和AGTGTC,結(jié)果是dismatch呢?
--xyz
3.?re: Kruskal算法
這個(gè)程序是不是有個(gè)bug:
如果節(jié)點(diǎn)數(shù)量為1,邊數(shù)量為0
則應(yīng)該是有生成樹(shù)的,但是kruskal函數(shù)返回結(jié)果為false吧
個(gè)人意見(jiàn)
--mwxjm
4.?re: 加減乘除24
想問(wèn)下~為什么tb1函數(shù)要swap交換后在執(zhí)行后有swap
--65666
5.?re: poj 1024 Tester Program[未登錄](méi)
灰常感謝LZ,看了你的第5條那個(gè),讓debug了3個(gè)小時(shí)的我一下就過(guò)了;
因?yàn)槲业某跏蓟瓉?lái)是-1,所以釀成杯具啊。。
這bug。。汗。
--joy
閱讀排行榜
1.?Dijkstra算法(6218)
2.?Kruskal算法(4587)
3.?Prim算法(4367)
4.?(正則表達(dá)式)是否匹配(字符串)(3959)
5.?加減乘除24(2427)
評(píng)論排行榜
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
閱讀(4367)
評(píng)論(1)
編輯
收藏
引用
所屬分類(lèi):
Algorithm
/**/
/*
*
* PRIM(簡(jiǎn)單版) 最小生成樹(shù)算法 (Minimum Spanning Tree)
* 輸入:圖g; // 有向圖或者無(wú)向圖
* 輸出:(1)最小生成樹(shù)長(zhǎng)sum;
* (2)最小生成樹(shù)prev。
* 結(jié)構(gòu): 圖g用鄰接矩陣表示,最短邊長(zhǎng)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 : 頂點(diǎn)個(gè)數(shù)
vector
<
vector
<
int
>
>
g;
//
g : 圖(graph)(用鄰接矩陣(adjacent matrix)表示)
vector
<
bool
>
known;
//
known : 各點(diǎn)是否已經(jīng)選取
vector
<
int
>
dist;
//
dist : 已選取點(diǎn)集到未選取點(diǎn)的最小邊長(zhǎng)
vector
<
int
>
prev;
//
prev : 最小生成樹(shù)中各點(diǎn)的前一頂點(diǎn)
int
s;
//
s : 起點(diǎn)(start)
int
sum;
//
sum : 最小生成樹(shù)長(zhǎng)
bool
Prim()
//
貪心算法(Greedy Algorithm)
{
known.assign(n,
false
);
dist.assign(n, INT_MAX);
prev.resize(n);
//
初始化known、dist、prev。
dist[s]
=
0
;
//
初始化起點(diǎn)到自身的路徑長(zhǎng)為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;
//
尋找未知的最短路徑長(zhǎng)的頂點(diǎn)v,
if
(min
==
INT_MAX)
break
;
//
如果找不到,退出;
known[v]
=
true
;
//
如果找到,將頂點(diǎn)v設(shè)為已知,
sum
+=
dist[v];
//
調(diào)整最小生成樹(shù)長(zhǎng)
for
(
int
w
=
0
; w
<
n;
++
w)
//
遍歷所有v指向的頂點(diǎn)w,
if
(
!
known[w]
&&
g[v][w]
<
INT_MAX
&&
dist[w]
>
g[v][w])
dist[w]
=
g[v][w], prev[w]
=
v;
//
調(diào)整頂點(diǎn)w的最短路徑長(zhǎng)dist和最短路徑的前一頂點(diǎn) prev。
}
return
i
==
n;
//
如果選取頂點(diǎn)個(gè)數(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
;
//
起點(diǎn)任選
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ù)
更多評(píng)論
2009-04-15 12:52 by
brightcoder
good!~
刷新評(píng)論列表
只有注冊(cè)用戶(hù)
登錄
后才能發(fā)表評(píng)論。
【推薦】100%開(kāi)源!大型工業(yè)跨平臺(tái)軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
Floyd_Warshall算法
Kruskal算法
Prim算法
Critical Path 關(guān)鍵路徑
Bellman_Ford算法 SPFA算法
Dijkstra算法
USP 無(wú)權(quán)最短路徑算法
Topsort 拓?fù)渑判?/a>
(正則表達(dá)式)是否匹配(字符串)
Quicksort 快速排序
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問(wèn)
Chat2DB
管理
Powered by:
C++博客
Copyright © lzmagic
熟妇人妻久久中文字幕
|
久久人人爽人人爽人人片AV东京热
|
国产精品99久久久精品无码
|
久久综合偷偷噜噜噜色
|
久久久精品人妻一区二区三区四
|
AAA级久久久精品无码区
|
中文字幕乱码人妻无码久久
|
亚洲欧美精品伊人久久
|
亚洲综合熟女久久久30p
|
久久国产成人午夜aⅴ影院
|
国内精品久久久久国产盗摄
|
精品久久久久成人码免费动漫
|
亚洲欧美日韩精品久久
|
日韩av无码久久精品免费
|
欧美性大战久久久久久
|
久久亚洲国产精品一区二区
|
97精品伊人久久久大香线蕉
|
99精品国产免费久久久久久下载
|
婷婷综合久久中文字幕
|
av无码久久久久久不卡网站
|
77777亚洲午夜久久多喷
|
亚州日韩精品专区久久久
|
99久久人人爽亚洲精品美女
|
久久久国产精品亚洲一区
|
国产激情久久久久久熟女老人
|
欧美麻豆久久久久久中文
|
久久久WWW成人
|
久久人人超碰精品CAOPOREN
|
久久精品国产亚洲5555
|
青青草国产精品久久久久
|
国产精品一区二区久久
|
久久777国产线看观看精品
|
久久国产精品99久久久久久老狼
|
99国产精品久久久久久久成人热
|
亚洲AV无码久久寂寞少妇
|
久久午夜羞羞影院免费观看
|
久久精品人成免费
|
久久精品国产福利国产秒
|
国产成人无码精品久久久久免费
|
99久久精品午夜一区二区
|
国产一级持黄大片99久久
|