题目描述 试实现邻接表存储图的广度优先遍历。遍历从指定顶点 $S$ 出发,访问邻接点时按邻接表中的顺序进行。 相关类型定义如下: typedef int Vertex; typedef struct AdjVNode PtrToAdjVNode; struct AdjVNode { Vertex AdjV; PtrToAdjVNode Next; }; typedef struct Vnode { PtrToAdjVNode FirstEdge; } AdjList[MaxVertexNum]; typedef struct GNode PtrToGNode; struct GNode { int Nv; int Ne; AdjList G; }; typedef PtrToGNode LGraph; 函数接口如下: void BFS(LGraph Graph, Vertex S, void ( Visit)(Vertex)); 输入格式 第一行输入两个整数 $n,m$,分别表示顶点数和边数,顶点编号为 $0$ 到 $n-1$。 接下来 $m$ 行,每行输入两个整数 $u,v$,表示顶点 $u$ 和顶点 $v$ 之间存在一条无向边。邻接表按输入顺序保存邻接点。 最后一行输入整数 $S$,表示遍历起点。 输出格式 输出 BFS from S:,随后按访问顺序输出各顶点编号,每个编号前有一个空格。 数据范围 $1\le n\le10$ 输入样例 5 4 0 1 0 2 1 3 1 4 0 输出样例 BFS from 0: 0 1 2 3 4