lzm
who dare win.
posts - 14, comments - 29, trackbacks - 0, articles - 0
導航
C++博客
首頁
新隨筆
聯系
聚合
管理
<
2025年8月
>
日
一
二
三
四
五
六
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
31
1
2
3
4
5
6
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(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
搜索
積分與排名
積分 - 39171
排名 - 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算法(6217)
2.?Kruskal算法(4587)
3.?Prim算法(4367)
4.?(正則表達式)是否匹配(字符串)(3959)
5.?加減乘除24(2426)
評論排行榜
1.?加減乘除24(7)
2.?poj 1094 Sorting It All Out(5)
3.?Quicksort 快速排序(4)
4.?(正則表達式)是否匹配(字符串)(3)
5.?Dijkstra算法(3)
USP 無權最短路徑算法
Posted on 2009-04-09 10:44
lzmagic
閱讀(2233)
評論(0)
編輯
收藏
引用
所屬分類:
Algorithm
/**/
/*
*
* USP 無權最短路徑算法(Unweighted Shortest Path Algorithm)
* 輸入:(1)圖g; // 有向圖或者無向圖
* (2)源點s。
* 輸出:(1)源點s到各點的無權最短路徑長dist(路徑的邊數最小);
* (2)源點s到各點的無權最短路徑prev。
* 結構: 圖g用鄰接表表示,最短路徑長dist用數組表示。
* 算法:廣度優先搜索(BFS)
* 復雜度:O(|E|+|V|)~O(|E|)
*/
#include
<
iostream
>
#include
<
vector
>
#include
<
list
>
#include
<
queue
>
#include
<
iterator
>
#include
<
algorithm
>
#include
<
numeric
>
#include
<
functional
>
#include
<
climits
>
using
namespace
std;
int
n;
//
n : 頂點個數
vector
<
list
<
int
>
>
g;
//
g : 圖(graph)(用鄰接表(adjacent list)表示)
int
s;
//
s : 源點(source)
vector
<
int
>
dist;
//
dist : 源點s到各點之間的距離
vector
<
int
>
prev;
//
prev : 各點最短路徑的前一頂點號
void
USP()
//
廣度優先搜索(BFS)
{
queue
<
int
>
que;
dist.assign(n, INT_MAX);
//
初始化dist,
prev.resize(n);
//
初始化prev。
dist[s]
=
0
; que.push(s);
//
s到自身距離為0,s入隊。
while
(
!
que.empty())
{
int
v
=
que.front(); que.pop();
//
v出隊,
for
(list
<
int
>
::iterator it
=
g[v].begin(); it
!=
g[v].end();
++
it)
//
遍歷v相鄰點*it,
if
(dist[
*
it]
==
INT_MAX)
//
如果*it未訪問,
{
dist[
*
it]
=
dist[v]
+
1
; prev[
*
it]
=
v;
//
調整點*it,
que.push(
*
it);
//
*it入隊。
}
}
}
void
Print_SP(
int
v)
{
if
(v
!=
s) Print_SP(prev[v]);
cout
<<
v
<<
"
"
;
}
int
main()
{
n
=
7
;
g.assign(n, list
<
int
>
());
g[
0
].push_back(
1
); g[
0
].push_back(
3
);
g[
1
].push_back(
3
); g[
1
].push_back(
4
);
g[
2
].push_back(
0
); g[
2
].push_back(
5
);
g[
3
].push_back(
2
); g[
3
].push_back(
4
); g[
3
].push_back(
5
); g[
3
].push_back(
6
);
g[
4
].push_back(
6
);
g[
6
].push_back(
5
);
s
=
2
;
USP();
copy(dist.begin(), dist.end(), ostream_iterator
<
int
>
(cout,
"
"
)); cout
<<
endl;
for
(
int
i
=
0
; i
<
n;
++
i)
if
(dist[i]
!=
INT_MAX)
{
cout
<<
s
<<
"
->
"
<<
i
<<
"
:
"
;
Print_SP(i);
cout
<<
endl;
}
system(
"
pause
"
);
return
0
;
}
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
相關文章:
Floyd_Warshall算法
Kruskal算法
Prim算法
Critical Path 關鍵路徑
Bellman_Ford算法 SPFA算法
Dijkstra算法
USP 無權最短路徑算法
Topsort 拓撲排序
(正則表達式)是否匹配(字符串)
Quicksort 快速排序
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © lzmagic
久久午夜福利电影
|
久久久久久久99精品免费观看
|
久久人人爽人人爽人人片AV麻豆
|
久久久久亚洲爆乳少妇无
|
久久精品国产亚洲αv忘忧草
|
国产韩国精品一区二区三区久久
|
精品人妻伦九区久久AAA片69
|
久久香综合精品久久伊人
|
久久久久久久久久免免费精品
|
麻豆AV一区二区三区久久
|
欧美日韩中文字幕久久久不卡
|
国产国产成人精品久久
|
一本色道久久99一综合
|
久久久久亚洲AV无码专区桃色
|
亚洲国产日韩欧美久久
|
狠狠色丁香婷婷综合久久来
|
精品人妻伦九区久久AAA片69
|
久久精品三级视频
|
女人香蕉久久**毛片精品
|
午夜天堂av天堂久久久
|
性做久久久久久久久
|
久久国产精品波多野结衣AV
|
国产精品18久久久久久vr
|
区亚洲欧美一级久久精品亚洲精品成人网久久久久
|
亚洲精品成人久久久
|
久久97久久97精品免视看秋霞
|
久久综合综合久久97色
|
69SEX久久精品国产麻豆
|
欧美午夜精品久久久久免费视
|
中文国产成人精品久久亚洲精品AⅤ无码精品
|
99久久国产亚洲高清观看2024
|
久久久精品人妻一区二区三区四
|
一本一本久久A久久综合精品
|
中文字幕精品久久久久人妻
|
性做久久久久久久久老女人
|
久久精品国产99国产精品导航
|
99久久免费国产精品特黄
|
国产亚洲美女精品久久久2020
|
影音先锋女人AV鲁色资源网久久
|
国产成人久久精品一区二区三区
|
日本强好片久久久久久AAA
|