描述
一个有n个结点的无向连通图,这些结点以编号:1、2、……n进行编号,现给出结点间的连接关系。请以结点1为起点,按广度优先搜索(bfs)、优先访问小编号结点的顺序遍历并输出该图。
输入描述
第一行为两整数,n和e,表示n个顶点,e条边;(2<=n,e<=10)
以下e行每行两个数,表示两个结点是联通的。
输出描述
只有一行,为节点按照广度优先、小编号结点优先访问的结果。
用例输入 1
5 7 1 2 1 3 1 4 2 4 2 5 3 5 4 5
用例输出 1
1 2 3 4 5
来源
图论 图的遍历
code:
#include<iostream>
#include<stdio.h>
#include<vector>
#include<queue>
using namespace std;
int n, m;
vector<int> g[100005];
bool vis[100005];
void bfs(int idx) {
queue<int> q;
int cnt = 0;
q.push(idx);
while (!q.empty() && cnt < n) {
int t = q.front();
if (!vis[t]) {
cout << t << ' ';
cnt++;
vis[t] = 1;
}
for (auto x : g[t]) {
q.push(x);
}
q.pop();
}
}
int main() {
cin >> n >> m;
for (int i = 1; i <= m; i++) {
int x, y;
cin >> x >> y;
g[x].push_back(y);
g[y].push_back(x);
}
bfs(1);
return 0;
}
AC:
结尾撒花,给点支持