列出連通集 PTA dfs bfs

2021-10-02 05:32:15 字數 1093 閱讀 4837

根據乙個點 的鄰接點把與這個點相連的點全部找到

每發現乙個沒走過的點 直接就走 一直到無點可走為止

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...