题目描述 给定一个有N个顶点和E条边的无向图,请用BFS打印出搜索结果。从编号最小的顶点出发。 输入 第一行输入2个整数n,m。n表示n个顶点,m表示m条边(n<=20,m<=20)。 接着输入m行,每行2个整数u,v,表示u,v这2个点连接成一条边。 输出 输出bfs的结果 中间空格分隔,结尾无空格。(注:搜索的顺序按输入的顺序搜索) 样例输入 Copy 5 4 1 2 2 3 3 4 5 1 样例输出 Copy 1 2 5 3 4用Java写
时间: 2023-06-11 19:09:36 浏览: 68
```java
import java.util.*;
public class Main {
static int n, m;
static boolean[] vis;
static List<Integer>[] edges;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
vis = new boolean[n + 1];
edges = new List[n + 1];
for (int i = 1; i <= n; i++) {
edges[i] = new ArrayList<>();
}
for (int i = 0; i < m; i++) {
int u = sc.nextInt();
int v = sc.nextInt();
edges[u].add(v);
edges[v].add(u);
}
bfs();
}
public static void bfs() {
Queue<Integer> queue = new LinkedList<>();
for (int i = 1; i <= n; i++) {
Collections.sort(edges[i]);
}
queue.offer(1);
vis[1] = true;
while (!queue.isEmpty()) {
int u = queue.poll();
System.out.print(u + " ");
for (int v : edges[u]) {
if (!vis[v]) {
queue.offer(v);
vis[v] = true;
}
}
}
}
}
```
阅读全文