fork download
  1. import java.io.BufferedReader;
  2. import java.io.InputStreamReader;
  3. import java.util.ArrayDeque;
  4. import java.util.HashSet;
  5. import java.util.Queue;
  6.  
  7.  
  8.  
  9.  
  10.  
  11. class PT07Z2
  12. { static int pop;
  13. static boolean marked[];
  14.  
  15.  
  16. static int dist;
  17.  
  18. public static void main(String args[])
  19. { try {
  20. int a,b,n;
  21. int node=n=Integer.parseInt(br.readLine());
  22. HashSet<Integer>[] hs=new HashSet[node];
  23. for(int i = 0; i < node; i++){
  24. hs[i] = new HashSet<>();
  25. }
  26. marked= new boolean[node];
  27. Queue<Integer> popper= new ArrayDeque<>();
  28. while(node>1)
  29. {
  30. String str[]=br.readLine().split(" ");
  31. a=Integer.parseInt(str[0]);
  32. b=Integer.parseInt(str[1]);
  33. hs[a-1].add(b-1);
  34. hs[b-1].add(a-1);
  35. node--;
  36. }
  37. popper.add(0);
  38. int present_level=1;
  39. int next_level=0;
  40. int from= bfs(popper, hs,present_level,next_level);
  41. popper.add(from);
  42. marked= new boolean[n];
  43. dist=0;
  44. present_level=1;
  45. next_level=0;
  46. int to=bfs(popper, hs,present_level,next_level);
  47. System.out.println(dist-1);
  48. } catch (Exception e) {
  49. System.out.println(e);
  50.  
  51.  
  52. }
  53. }
  54. static int bfs(Queue<Integer> popper, HashSet<Integer>[] l,int pl,int nl)
  55. {
  56. pop=popper.remove();
  57. pl--;
  58.  
  59.  
  60.  
  61. marked[pop]=true;
  62. for(int i:l[pop])
  63. if(marked[i]==false)
  64. {
  65.  
  66. popper.add(i);
  67. nl++;
  68.  
  69.  
  70. }
  71.  
  72. if(pl==0)
  73. {pl=nl;
  74.  
  75.  
  76. nl=0;
  77. dist++;
  78. }
  79.  
  80. if(!popper.isEmpty())
  81. bfs(popper, l,pl,nl);
  82.  
  83.  
  84. return pop;
  85. }
  86. }
Success #stdin #stdout 0.1s 320256KB
stdin
Standard input is empty
stdout
java.lang.NumberFormatException: null