|
帮助中心 | 欢迎你的到来,
liang530
离开 办公电话:
0738-8371676
- 首页 欢迎您访问湖南人文科技学院程序设计竞赛网站,我们正努力做到更好!
- 系统 主页 | 帮助 | 全文搜索
- 交流 讨论区 | 版块列表
- 题目 题目列表 | 上传试题 | 提交状态
- 比赛 已结束 | 预定比赛 | 当前比赛
- 用户 用户排名 | 修改个人信息 | 用户注册
数据结构:图2(BFS遍历)
时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte
总提交:36 测试通过:22
描述
从已给的连通图中某一顶点出发,沿着一些边访遍图中所有的顶点,且使每个顶点仅被访问一次,就叫做图的遍历。图的遍历的遍历有DFS和BFS两种。
上面的图,从顶点0出发,按照顶点序号从小到大的顺序BFS,得到遍历顺序为0 1 4 8 2 5 3 6 7。
输入
输入图的顶点个数与边数,以及每条边的两个顶点。
输出
BFS遍历顺序。
样例输入
9 10
0 1
1 2
2 3
1 4
0 4
0 8
8 5
5 4
5 6
6 7
样例输出
0 1 4 8 2 5 3 6 7
题目来源
hnldyhy
#include <iostream>
#include <queue>
using namespace std;
queue <int> my;
int m,n,map[100][100],bz[100],g=0;
void BFS(int k)
{ int t,i;
my.push(k);
bz[k]=1;
while(!my.empty())
{
t=my.front();g++;
my.pop();
if(g!=m)cout<<t<<" "; else cout<<t<<endl;
for(i=0;i<m;i++)
if(map[t][i]==1&&bz[i]==0)
{
bz[i]=1;
my.push(i);
}
}
}
int main()
{
int i=0,n,x,y,ans;
cin>>m>>n;
while (i<n)
{
cin>>x>>y;
map[x][y]=map[y][x]=1;
i++;
}
BFS(0);
return 0;
}