後記給定乙個有n個頂點和e條邊的無向圖,請用dfs和bfs分別列出其所有的連通集。假設頂點從0到n−1編號。進行搜尋時,假設我們總是從編號最小的頂點出發,按編號遞增的順序訪問鄰接點。
輸入格式:
輸入第1行給出2個整數n(0按照""的格式,每行輸出乙個連通集。先輸出dfs的結果,再輸出bfs的結果。
輸入樣例:
8 60 7
0 12 0
4 12 4
3 5輸出樣例:
dfs類似於先序遍歷,採用遞迴實現;bfs類似於層序遍歷採用佇列實現.
#include
#include
#define maxn 10
using
namespace std;
int nv, ne;
int visited[maxn]
, graph[maxn]
[maxn]
;void
creategraph()
}void
dfs(
int i)}}
void
bfs(
int i)}}
}int
main()
"<< endl;}}
memset
(visited,0,
sizeof
(visited));
for(
int i =
0; i < nv; i++)"
<< endl;}}
return0;
}
#include
#include<
string
.h>
#include
#define maxn 10
using namespace std;
int nv, ne;
queue<
int>q;
int visited[maxn]
, graph[maxn]
[maxn]
;void creategraph()
}void dfs
(int i)
}void bfs
(int i)
} cout <<
" "<< q.
front()
; q.
pop();
}}intmain()
"<< endl;}}
memset
(visited,0,
sizeof
(visited));
for(
int i =
0; i < nv; i++)"
<< endl;}}
return0;
}
1.memset的用法參考:memset的用法,在這個題中用於對陣列visited的初始化.
2.stl中的佇列的使用有些地方有些忘記了,需要複習.
3.說實話,我感覺這兩個版本的**是一樣的,只是用stl的佇列替換c語言的佇列,好吃就是複習了一下stl的佇列╮(╯▽╰)╭.
7 6 列出連通集 (25 分)
題目鏈結 這個題一開始沒仔細看結果,就覺得是乙個並查集,寫出來之後只能過乙個點,然後才仔細去看了看樣例,結果發現其實陽曆都過不去,也不知道最後乙個點怎麼過的 這個題就是按照他說的來,乙個深搜乙個廣搜。include include include include using namespace st...
7 6 列出連通集 (25 分)
給定乙個有n個頂點和e條邊的無向圖,請用dfs和bfs分別列出其所有的連通集。假設頂點從0到n 1編號。進行搜尋時,假設我們總是從編號最小的頂點出發,按編號遞增的順序訪問鄰接點。輸入第1行給出2個整數n 0按照 的格式,每行輸出乙個連通集。先輸出dfs的結果,再輸出bfs的結果。8 6 0 70 1...
7 6 列出連通集 25分
給定乙個有n個頂點和e條邊的無向圖,請用dfs和bfs分別列出其所有的連通集。假設頂點從0到n 1編號。進行搜尋時,假設我們總是從編號最小的頂點出發,按編號遞增的順序訪問鄰接點。輸入第1行給出2個整數n 0 和e,分別是圖的頂點數和邊數。隨後e行,每行給出一條邊的兩個端點。每行中的數字之間用1空格分...