(1)访问顶点v;
(2)依次访问v的各个未被访问的邻接点v1,v2,v3……,vk;
(3)分别从v1,v2,v3……,vk出发依次访问他们未被访问的邻接点,并使“先被访问顶点的邻接点”先于“后被访问的邻接点”被访问。直至图中所有与顶点v有路径相通的顶点都被访问到。
1.初始化队列Q;
2.访问顶点v;visited[v]=true;顶点v入队列Q;
3.while(队列Q非空)
3.1 v=队列Q的队头元素出队;
3.2 w=顶点v的第一个邻接点;
3.3while(w存在)
3.3.1 如果w未被访问,则访问顶点w;visited[w]=1;顶点w入队;
3.3.2 w=顶点v的下一个邻接点
- template<class T>
- void MGraph
::BFSTraverse(int v){ - bool visited[vertexNum]=false;
- queue<int> Q;
- int w,i=0,count=0;
-
- cout<
- visited[v]=true;
- ++count;
- Q.push(v);
-
- if(count==vertexNum){
- return;
- }
- while(!Q.empty()){
- v=Q.front();//队头元素出队
- Q.pop();
- for(i=0;i
- if(arc[v][i]&&!visited[i]){//w未被访问
- w=i;
- cout<
- visited[w]=true;
- ++count;
- Q.push(w);
- }
- }
- }
-
- }
- template <class T>
- void ALGraph
::BFSTraverse(int v){ - bool visited[vertexNum]=false;
- queue<int> Q;
- int w,i=0,count=0;
-
- cout<
- visited[v]=true;
- ++count;
- Q.push(v);
-
- if(count==vertexNum){
- return;
- }
- while(!Q.empty()){
- v=Q.front();//队头元素出队
- Q.pop();
- struct ArcNode *p=adjList[v].firstEdge;
-
- while(p){
- if(!visited[p->adjvex]){
- w=p->adjvex;
-
-
相关阅读:
小程序首页搭建
django报错--Not Found The requested URL was not found on the server.
【深度学习 AIGC】stable diffusion webUI 使用过程,参数设置,教程,使用方法
二叉搜索树在线OJ题讲解
【算法】一文带你从浅至深入门dp动态规划
【触想智能】工业显示器上市前的检测项目分享
(经典dp) I型 L型 铺盖2*n
甘特图组件DHTMLX Gantt示例 - 如何有效管理团队工作时间?(一)
STM32 FreeRTOS 内存问题
leetcode每日一题刷题打卡1700
-
原文地址:https://blog.csdn.net/Hsianus/article/details/134487498