问题 F: 案例6-1.2:邻接表存储图的广度优先遍历
创始人
2024-01-21 01:39:32
0

题目描述

一个图有n个节点编号从0至n-1和m条边编号从0至m-1。 输出从点x开始的广度优先遍历顺序。

输入格式

第一行为n、m、x。 
接下来m行每行有一组u,v。表示点u可以到达点v,点v也可以到达点u。

输出格式

输出经过点的顺序。(输出字典序最小的答案)

输入样例

7 9 5
0 3
0 2
0 4
3 1
3 2
4 5
1 5
2 5
5 6

输出样例  

5 1 2 4 6 3 0

代码展示 

emmm函数不一定全用上了有些是别的题留下的为了之后方便使用没删

#include
#include
#include
#include
using namespace std;#define MAX_SIZE 100//领接矩阵存储的图
struct Graph{int vexNumber;string vexInfo[MAX_SIZE];int adjMatrix[MAX_SIZE][MAX_SIZE];
};//弧结点定义
struct ArcNode{int weight;//弧上的信息部分int adj;//邻接点的序号ArcNode *nextarc;
};//顶点结点定义
struct VexNode{string Info;ArcNode *firstarc;
};//领接表结构的图的定义
struct linkGraph{VexNode *vexes;int vexnumber;
};int preInitGraph(linkGraph &G,const Graph &g){G.vexes=new VexNode[g.vexNumber];G.vexnumber=g.vexNumber;for(int i=0;inextarc=NULL;p->adj=j;ArcNode *q=G.vexes[i].firstarc;if(G.vexes[i].firstarc==NULL)G.vexes[i].firstarc=p;else{while(q->nextarc!=NULL){q=q->nextarc;}q->nextarc=p;}}}}
}int DestroyGraph(linkGraph &G){for(int i=0;inextarc;delete p;}}delete[]G.vexes;G.vexes=NULL;G.vexnumber=0;return 0;
}
//输出领接表存储的图
void PrintGraph(const linkGraph &G){for(int i=0;i "<adj].Info;p=p->nextarc;}cout<s;ArcNode *p=G.vexes[v0].firstarc;s.push(p);while(!s.empty()){ArcNode *vNode=s.top();for(p=vNode;p!=NULL;p=p->nextarc){if(visited[p->adj]==0){result+=G.vexes[p->adj].Info;result+=" ";visited[p->adj]=1;if(p->nextarc!=NULL)  s.push(p->nextarc);break;}}if(p==NULL)  s.pop();}return result;
}
//对整个图进行DFS
string DFS(const Graph &G){string result="";linkGraph LG;InitGraph(LG,G);//test//PrintGraph(LG);int *visited=new int[G.vexNumber];for(int i=0;iq;q.push(v0);visited[v0]=1;while(!q.empty()){int v=q.front();q.pop();cout<nextarc){if(!visited[p->adj]){q.push(p->adj);visited[p->adj]=1;}}}return 0;
}int BFS(Graph &G,int x){int *visited=new int[G.vexNumber];for(int i=0;i>n>>m>>x;if(n==0){cout<<0;return 0;}Graph G;G.vexNumber=n;for(int i=0;i>a>>b;G.adjMatrix[a][b]=1;G.adjMatrix[b][a]=1;}BFS(G,x);return 0;
}

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...