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 Why
  9. {
  10.  
  11. public int[] depths1;
  12. public int[] depths2;
  13. public ArrayList<Integer>[] arr;
  14.  
  15. public static void main (String[] args) throws java.lang.Exception
  16. {
  17. Why w = new Why();
  18. w.comp();
  19. }
  20.  
  21. public void dfs1(int source, int dep)
  22. {
  23. if(depths1[source] != -1)
  24. {
  25. return;
  26. }
  27. depths1[source] = dep;
  28. System.out.println("HELLO WHAT IS WRONG");
  29.  
  30. for(int i = 0; i < arr[source].size(); i++)
  31. {
  32. int next = arr[source].get(i);
  33. if(depths1[next] == -1)
  34. {
  35. dfs1(next, dep+1);
  36. }
  37. }
  38. }
  39.  
  40. public void dfs2(int source, int dep)
  41. {
  42. if(depths2[source] == -1)
  43. {
  44. depths2[source] = dep;
  45. }
  46. else return;
  47.  
  48. for(int next : arr[source])
  49. {
  50. if(depths2[next] == -1)
  51. {
  52. dfs2(next, dep+1);
  53. }
  54. }
  55. }
  56.  
  57. public void comp()
  58. {
  59. Scanner sc = new Scanner(System.in);
  60.  
  61. int n = sc.nextInt();
  62.  
  63. depths1 = new int[n];
  64. depths2 = new int[n];
  65.  
  66. Arrays.fill(depths1, -100);
  67. Arrays.fill(depths2, -100);
  68.  
  69. arr = new ArrayList[n];
  70.  
  71. for(int i = 0; i < arr.length; i++) arr[i] = new ArrayList<>();
  72.  
  73. for(int i = 0; i < n-1; i++)
  74. {
  75. int u = sc.nextInt() - 1;
  76. int v = sc.nextInt() - 1;
  77.  
  78. arr[u].add(v);
  79. arr[v].add(u);
  80. }
  81.  
  82. dfs1(0, 0);
  83.  
  84. long max = 0;
  85. int newn = -1;
  86. for(int i = 0; i < n; i++)
  87. {
  88. if(max < depths1[i])
  89. {
  90. newn = i;
  91. max = depths1[i];
  92. }
  93. }
  94.  
  95. pw.println(newn);
  96. for(int i = 0; i < depths1.length; i++) pw.println(depths1[i]);
  97.  
  98. // dfs2(newn, 0);
  99.  
  100. max = 0;
  101. for(int i = 0; i < n; i++)
  102. {
  103. if(max < depths1[i])
  104. {
  105. max = depths1[i];
  106. }
  107. }
  108.  
  109. pw.println(max);
  110. pw.close();
  111. sc.close();
  112. }
  113. }
  114.  
Success #stdin #stdout 0.1s 2841600KB
stdin
6
1 2
2 3
2 4
4 6
4 5
stdout
-1
-100
-100
-100
-100
-100
-100
0