fork download
  1. import java.util.*;
  2.  
  3. public class Main {
  4. public static void bfs(ArrayList<ArrayList<Integer>> graph, int start, int n) {
  5. Queue<Integer> queue = new LinkedList<>();
  6. boolean[] visited = new boolean[n + 1];
  7. int[] level = new int[n + 1];
  8.  
  9. queue.add(start);
  10. visited[start] = true;
  11. level[start] = 0;
  12.  
  13. while (!queue.isEmpty()) {
  14. int node = queue.poll();
  15. System.out.println("Node: " + node + ", Level: " + level[node]);
  16.  
  17. for (int neighbor : graph.get(node)) {
  18. if (!visited[neighbor]) {
  19. queue.add(neighbor);
  20. visited[neighbor] = true;
  21. level[neighbor] = level[node] + 1;
  22. }
  23. }
  24. }
  25. }
  26.  
  27. public static void main(String[] args) {
  28. int n = 6, m = 5;
  29. int[][] edges = {
  30. {1, 2}, {1, 3}, {2, 4}, {2, 5}, {3, 6}
  31. };
  32.  
  33. ArrayList<ArrayList<Integer>> graph = new ArrayList<>();
  34. for (int i = 0; i <= n; i++) {
  35. graph.add(new ArrayList<>());
  36. }
  37.  
  38. for (int[] edge : edges) {
  39. int u = edge[0], v = edge[1];
  40. graph.get(u).add(v);
  41. graph.get(v).add(u);
  42. }
  43.  
  44. bfs(graph, 1, n);
  45. }
  46. }
  47.  
Success #stdin #stdout 0.18s 55504KB
stdin
Standard input is empty
stdout
Node: 1, Level: 0
Node: 2, Level: 1
Node: 3, Level: 1
Node: 4, Level: 2
Node: 5, Level: 2
Node: 6, Level: 2