BFS廣度優先搜尋遍歷

2021-07-24 03:20:44 字數 945 閱讀 6348

廣度優先搜尋遍歷

problem description

給定乙個無向連通圖,頂點編號從0到n-1,用廣度優先搜尋(bfs)遍歷,輸出從某個頂點出發的遍歷序列。(同乙個結點的同層鄰接點,節點編號小的優先遍歷)

input

輸入第一行為整數n(0< n <100),表示資料的組數。

對於每組資料,第一行是三個整數k,m,t(0<k<100,0<m<(k-1)*k/2,0< t<k),表示有m條邊,k個頂點,t為遍歷的起始頂點。 

下面的m行,每行是空格隔開的兩個整數u,v,表示一條連線u,v頂點的無向邊。

output

輸出有n行,對應n組輸出,每行為用空格隔開的k個整數,對應一組資料,表示bfs的遍歷結果。

example input

1

6 7 0

0 30 4

1 41 5

2 32 4

3 5

example output

0 3 4 2 5 1

**如下:

#include#include#include using namespace std;

int b[11];//該陣列和que陣列一樣,但是功能不一樣

int que[11];//佇列,頂點先進先出

int a[10][10];

void bfs(int r,int len)

{ int i=0;

int vis[11];//標記是否走過

memset(vis,0,sizeof(vis));//初始化,所有定點均未走過

int s=0,e=0;//e:入隊,s:出隊

vis[r]=1;//標記起始頂點已走過

que[e++]=r;//起始頂點入隊

b[i++]=r;//起始頂點進入輸出陣列

while(s

廣度優先搜尋 BFS遍歷

廣度優先搜尋 breadth first search bfs 是乙個分層搜尋的過程,沒有回退過程,是非遞迴的。為避免重複訪問,需要乙個狀態陣列visited n 來儲存各頂點的訪問狀態。為實現逐層訪問,bfs演算法在實現時需要乙個佇列,以記憶正在訪問的這一層和上一層的頂點,以便於向下一層訪問。例題...

BFS(廣度優先搜尋)遍歷

bfs 廣度優先,結合佇列實現遍歷方式 1.選對乙個入口 2.訪問所有的當前頂點的所有鄰接頂點 3.出隊,找當前頂點鄰接頂點 4.標記已經遍歷節點 5.隊列為null,所有頂點都被訪問 define crt secure no warnings include include include typ...

BFS廣度優先遍歷

樹的層序遍歷即為bfs的應用。實質就是利用乙個佇列將頂點v的鄰接點儲存,因樹的結構比較特殊,所以不需要進行設定flag訪問位,但圖的情況比較複雜,一般需要對每個結點是否被訪問進行標記。利用bfs可以很容易的利用層數求出最短的步數,比如二叉樹利用層序遍歷求樹的高度,但深搜一般也可以實現。廣度優先搜尋能...