根據乙個點 的鄰接點把與這個點相連的點全部找到每發現乙個沒走過的點 直接就走 一直到無點可走為止
bfs是分層的 第乙個給的點就是第一層 第乙個點能走的點是第二層第二層的點能走的點即是第三層… 一直到全部走完
bfs利用佇列(queue)來實現 將要走的點在佇列裡面 現在正在走的點是佇列的第乙個點 如果要走 就先出列(即 拿出來付給乙個變數 並且把它從佇列裡刪去)
然後就看這個點的鄰接點 把這個點的鄰接點依次放到佇列的後面 之後再依次拿出 當佇列裡沒有的時候也就是點已經全部走完了
#include
#include
#include
#include
using
namespace std;
vectorint>> x;
vector<
int> dp;
//標記
void
dfs(
int d)
}void
bfs(
int t)}}
}int
main()
// cout << endl;
for(
int i =
0; i < n; i++
) cout << endl;
*****************************/
}// cout << endl;
for(
int i =
0; i < n; i++)"
; cout << endl;}}
//因為上面已經改變了 重新填充
fill
(dp.
begin()
, dp.
end(),
0);for
(int i =
0; i < n; i++)"
; cout << endl;}}
return0;
}
fill 函式用法 列出連通集
給定乙個有n個頂點和e條邊的無向圖,請用dfs和bfs分別列出其所有的連通集。假設頂點從0到n 1編號。進行搜尋時,假設我們總是從編號最小的頂點出發,按編號遞增的順序訪問鄰接點。輸入第1行給出2個整數n 0按照 的格式,每行輸出乙個連通集。先輸出dfs的結果,再輸出bfs的結果。純dfs和bfs的練...
列出連通集
7 15 列出連通集 25 分 給定乙個有n個頂點和e條邊的無向圖,請用dfs和bfs分別列出其所有的連通集。假設頂點從0到n 1編號。進行搜尋時,假設我們總是從編號最小的頂點出發,按編號遞增的順序訪問鄰接點。輸入格式 輸入第1行給出2個整數n 0輸出格式 按照 的格式,每行輸出乙個連通集。先輸出d...
列出連通集
7 6 列出連通集 25 分 給定乙個有n個頂點和e條邊的無向圖,請用dfs和bfs分別列出其所有的連通集。假設頂點從0到n 1編號。進行搜尋時,假設我們總是從編號最小的頂點出發,按編號遞增的順序訪問鄰接點。輸入第1行給出2個整數n 0按照 的格式,每行輸出乙個連通集。先輸出dfs的結果,再輸出bf...