廣度優先搜尋遍歷
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
16 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可以很容易的利用層數求出最短的步數,比如二叉樹利用層序遍歷求樹的高度,但深搜一般也可以實現。廣度優先搜尋能...