数据结构实验之图论二:基于邻接表的广度优先搜索遍历
2016-08-16 08:46
531 查看
这道题的算法思想主要是利用邻接矩阵来存储图的顶点和边的关系,然后利用递归的思想,访问完与当前顶点相关的顶点后,再退回上一步,继续操作与上一顶点相关的顶点和边。
代码如下:
#include <bits/stdc++.h>
using namespace std;
int v[110];
int arc[110][110];
void BFS(int k,int t){/*广度优先遍历函数
int flag=0;
queue<int> q;//建立一个辅助队列;
q.push(t);//将开始遍历的顶点入队;
while(!q.empty()){//当前队列不为空;
int p=q.front();
q.pop();
for(int i=0;i<k;i++){
if(arc[p][i]&&!v[p]){
q.push(i);//将与当前顶点相邻且未被访问过的顶点入队
arc[p][i]=arc[i][p]=0;
}
}
if(!v[p]){
if(!flag){
cout<<p;
flag=1;
}
else{
cout<<" "<<p;
v[p]=1;//标记已经访问过的顶点;
}
}
}
}
int main(){
int n,k,m,t,u,s;
cin>>n;
while(n--){
memset(v,0,sizeof(v));//将数组置0;
memset(arc,0,sizeof(arc));
cin>>k>>m>>t;
for(int i=0;i<m;i++){/*构建邻接矩阵
cin>>u>>s;
arc[u][s]=arc[s][u]=1;
}
BFS(k,t);
}
return 0;
}
相关文章推荐
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历 oj
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历---2142
- SDUT 2142 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 暑假集训 8.15 数据结构实验之图论二:基于邻接表的广度优先搜索遍历 sdutoj2142
- 数据结构实验图论:基于邻接矩阵/邻接表的广度优先搜索遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- SDUT OJ数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历
- sdut 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- SDUT 2141 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- sdutacm-数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历