fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone{
  9. public static int[] bfs(List<List<Integer>> adj,int src,int n){
  10. Queue<Integer> q = new LinkedList<>();
  11. q.add(src);
  12.  
  13. int lvl[] = new int[n+1];
  14. Arrays.fill(lvl,-1);
  15. lvl[src] = 0;
  16.  
  17. int ways[] = new int[n+1];
  18. ways[src] = 1;
  19.  
  20. while(!q.isEmpty()){
  21. int u = q.poll();
  22.  
  23. for(int v : adj.get(u)){
  24.  
  25. if(lvl[v] == -1){
  26. lvl[v] = lvl[u] + 1;
  27. ways[v] = ways[u];
  28. q.offer(v);
  29. }
  30. else if(lvl[v] == lvl[u] + 1){
  31. ways[v] += ways[u];
  32. }
  33. }
  34. }
  35. return ways;
  36. }
  37. public static void main (String[] args) throws java.lang.Exception{
  38. Scanner sc = new Scanner(System.in);
  39. int n = sc.nextInt();
  40. int m = sc.nextInt();
  41. List<List<Integer>> adj = new ArrayList<>();
  42. for(int i=0;i<=n;i++){
  43. adj.add(new ArrayList<>());
  44. }
  45.  
  46. for(int i=0;i<m;i++){
  47. int u = sc.nextInt();
  48. int v = sc.nextInt();
  49. adj.get(u).add(v);
  50. adj.get(v).add(u);
  51. }
  52. int src = sc.nextInt();
  53. int ways[] = bfs(adj,src,n);
  54.  
  55. for(int i=1;i<=n;i++){
  56. System.out.println(i+" "+ways[i]);
  57. }
  58. }
  59. }
Success #stdin #stdout 0.23s 60908KB
stdin
4 4
1 2
1 3
2 4
3 4
1
stdout
1 1
2 1
3 1
4 2