广度优先遍历(BFS),亦称广度优先搜索。如果说使用递归是深搜的核心,那么使用队列进行操作是广搜的核心。如果说图的深度优先遍历类似于二叉树的前序遍历,那么图的广度优先遍历就类似于树的层序遍历(树的层序遍历在前文中我所撰写的树的四种遍历方式的博文中有所提及,倘若您感兴趣,可自行前往查看)。
话不多说,直接放出代码。比起深搜,广搜是很好理解的,重要的部分我已经放在了注释中阐明。
#include <iostream>
#include <cstring>
#include <queue>
#define INFINITY 65545
using namespace std;
const int maxn=115;
typedef int vertexes;
typedef int edgeType;
struct MGraph{
vertexes vexs[maxn];
edgeType arc[maxn][maxn];
int numVertexes,numEdges;
}G;
void createMGraph(MGraph *G){
cout<<"请输入所要建立的图中的顶点数与边数:";
cin>>G->numVertexes>>G->numEdges;
cout<<"请输入"<<G