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