这篇文章还是是为了帮助一些
像我这样的菜鸟
找到简单的题解
问题描述:马上到寒假了,JXY准备去n大城市游玩。这些城市之间有些有航线,有些没有。由于JXY特别懒,现在他想请一个更蒟蒻的人AYX帮他查一下航线的数量,JXY在1号城市,由近到远输出所有他能游玩的城市编号。(小天才WQG提醒:请使用广度优先遍历)
输入描述第一行:m和n,m代表城市数,n代表道路数量。
下面n行,每行两个数a、b,代表城市a、b之间有一条路。
输出描述输出图的广度优先遍历
用例输入 15 5 1 2 1 3 1 5 2 4 3 5用例输出 1
1 2 3 5 4问题解析:
标准BFS代码
套用模板即可
上一题变一种输入而已
图的遍历 广度优先遍历(爱思创)_吾乃狙击神蛐的博客-CSDN博客
代码BFS部分:queueq; void bfs(int x) { vis[x]=1; q.push(x);//入队 while(!q.empty())//判空 { int cur=q.front();//存储队首 for(int i=1;i<=n*2;i++) { if(g[cur][i]==1 && vis[i]==0) { q.push(i); vis[i]=1;//打标记 } } if(q.front()!=1) cout<<"-"< 完整代码: #includeACusing namespace std; int g[1001][1001],vis[1001]; int n,m; queue q; void bfs(int x) { vis[x]=1; q.push(x); while(!q.empty()) { int cur=q.front(); for(int i=1;i<=n*2;i++) { if(g[cur][i]==1 && vis[i]==0) { q.push(i); vis[i]=1; } } if(q.front()!=1) cout<<" "< >m>>n; int x,y; for(int i = 1 ; i <= n ;i++) { cin>>x>>y; g[x][y]=1; } cout<<1; bfs(1); return 0; }



