假设有一张这样的图
边权都为1,那么邻接矩阵为
BFS的遍历顺序为1,2,3,4,5。
BFS可以用队列实现,若为刚才的图,则队列依次变化为
初始:
1 0 0 0 0
head=1 tail=2
进行一次后:
1 2 3 0 0
结束后:head=2 tail=3
1临近的点为2和3,并且均未走过,所以入队
进行两次后:
1 2 3 4 0
结束后:head=3 tail=4
上一次head为2则用2作为初始点,2可以枚举到3和4,由于3已入队,所以只将4入队。
进行3次后:
1 2 3 4 5
结束后:head=4 tail=5
上一次head为3则用3作为初始点,3可以枚举到4和5所以将4和5入队。
进行4次后:
1 2 3 4 5
结束后:head=5 tail=5
head=tail程序结束。
讲了这么多还是上段代码吧
给一个图(含顶点数,边数,以及边),输出BFS遍历顺序
#include <bits/stdc++.h>
using namespace std;
int n,m;
int book[1005]={
0};//存走没走过
int e[1005][1005];//邻接矩阵
int que[100005];//队列
i