Submission #5500072


Source Code Expand

import java.util.Arrays;

public class Main {
  private static void solve() {
    int n = ni();
    int[] from = new int[n-1];
    int[] to = new int[n-1];
    for (int i = 0; i < n - 1; i ++) {
      from[i] = ni() - 1;
      to[i] = ni() - 1;
    }
    int[][] g = packU(n, from, to);
    
    int dia = diameter(g)[0];
    
    int now = 0;
    for (int k = 0;; k ++) {
      if (now >= dia) {
        System.out.println(k);
        return;
      }
      now = now * 2 + 2;
    }
  }
  
  public static int[][] packU(int n, int[] from, int[] to){ return packU(n, from, to, from.length); }
  public static int[][] packU(int n, int[] from, int[] to, int sup)
  {
      int[][] g = new int[n][];
      int[] p = new int[n];
      for(int i = 0;i < sup;i++)p[from[i]]++;
      for(int i = 0;i < sup;i++)p[to[i]]++;
      for(int i = 0;i < n;i++)g[i] = new int[p[i]];
      for(int i = 0;i < sup;i++){
          g[from[i]][--p[from[i]]] = to[i];
          g[to[i]][--p[to[i]]] = from[i];
      }
      return g;
  }

  
  public static int[] diameter(int[][] g)
  {
      int n = g.length;
      int f0 = -1, f1 = -1, d01 = -1;
      int[] q = new int[n];
      boolean[] ved = new boolean[n];
      {
          int qp = 0;
          q[qp++] = 0; ved[0] = true;
          for(int i = 0;i < qp;i++){
              int cur = q[i];
              for(int e : g[cur]){
                  if(!ved[e]){
                      ved[e] = true;
                      q[qp++] = e;
                      continue;
                  }
              }
          }
          f0 = q[n-1];
      }
      {
          int[] d = new int[n];
          int qp = 0;
          Arrays.fill(ved, false);
          q[qp++] = f0; ved[f0] = true;
          for(int i = 0;i < qp;i++){
              int cur = q[i];
              for(int e : g[cur]){
                  if(!ved[e]){
                      ved[e] = true;
                      q[qp++] = e;
                      d[e] = d[cur] + 1;
                      continue;
                  }
              }
          }
          f1 = q[n-1];
          d01 = d[f1];
      }
      return new int[]{d01, f0, f1};
  }
  public static void main(String[] args) {
    new Thread(null, new Runnable() {
      @Override
      public void run() {
        long start = System.currentTimeMillis();
        String debug = args.length > 0 ? args[0] : null;
        if (debug != null) {
          try {
            is = java.nio.file.Files.newInputStream(java.nio.file.Paths.get(debug));
          } catch (Exception e) {
            throw new RuntimeException(e);
          }
        }
        reader = new java.io.BufferedReader(new java.io.InputStreamReader(is), 32768);
        solve();
        out.flush();
        tr((System.currentTimeMillis() - start) + "ms");
      }
    }, "", 64000000).start();
  }

  private static java.io.InputStream is = System.in;
  private static java.io.PrintWriter out = new java.io.PrintWriter(System.out);
  private static java.util.StringTokenizer tokenizer = null;
  private static java.io.BufferedReader reader;

  public static String next() {
    while (tokenizer == null || !tokenizer.hasMoreTokens()) {
      try {
        tokenizer = new java.util.StringTokenizer(reader.readLine());
      } catch (Exception e) {
        throw new RuntimeException(e);
      }
    }
    return tokenizer.nextToken();
  }

  private static double nd() {
    return Double.parseDouble(next());
  }

  private static long nl() {
    return Long.parseLong(next());
  }

  private static int[] na(int n) {
    int[] a = new int[n];
    for (int i = 0; i < n; i++)
      a[i] = ni();
    return a;
  }

  private static char[] ns() {
    return next().toCharArray();
  }

  private static long[] nal(int n) {
    long[] a = new long[n];
    for (int i = 0; i < n; i++)
      a[i] = nl();
    return a;
  }

  private static int[][] ntable(int n, int m) {
    int[][] table = new int[n][m];
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) {
        table[i][j] = ni();
      }
    }
    return table;
  }

  private static int[][] nlist(int n, int m) {
    int[][] table = new int[m][n];
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) {
        table[j][i] = ni();
      }
    }
    return table;
  }

  private static int ni() {
    return Integer.parseInt(next());
  }

  private static void tr(Object... o) {
    if (is != System.in)
      System.out.println(java.util.Arrays.deepToString(o));
  }
}

Submission Info

Submission Time
Task D - Uninity
User hiromi_ayase
Language Java8 (OpenJDK 1.8.0)
Score 0
Code Size 4650 Byte
Status WA
Exec Time 345 ms
Memory 47988 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 1400
Status
AC × 2
AC × 37
WA × 37
Set Name Test Cases
Sample s1.txt, s2.txt
All 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, 37.txt, 38.txt, 39.txt, 40.txt, 41.txt, 42.txt, 43.txt, 44.txt, 45.txt, 46.txt, 47.txt, 48.txt, 49.txt, 50.txt, 51.txt, 52.txt, 53.txt, 54.txt, 55.txt, 56.txt, 57.txt, 58.txt, 59.txt, 60.txt, 61.txt, 62.txt, 63.txt, 64.txt, 65.txt, 66.txt, 67.txt, 68.txt, 69.txt, 70.txt, 71.txt, 72.txt, s1.txt, s2.txt
Case Name Status Exec Time Memory
01.txt WA 238 ms 44976 KB
02.txt WA 236 ms 39080 KB
03.txt WA 236 ms 42692 KB
04.txt WA 244 ms 42156 KB
05.txt WA 236 ms 47988 KB
06.txt WA 236 ms 41288 KB
07.txt WA 236 ms 44608 KB
08.txt WA 240 ms 43564 KB
09.txt AC 199 ms 38908 KB
10.txt AC 202 ms 41044 KB
11.txt AC 158 ms 30192 KB
12.txt AC 148 ms 30056 KB
13.txt AC 237 ms 43808 KB
14.txt AC 226 ms 40836 KB
15.txt AC 240 ms 41520 KB
16.txt WA 240 ms 44072 KB
17.txt AC 236 ms 42944 KB
18.txt AC 229 ms 44272 KB
19.txt WA 230 ms 45304 KB
20.txt WA 238 ms 44456 KB
21.txt WA 222 ms 42956 KB
22.txt WA 220 ms 43388 KB
23.txt AC 270 ms 39156 KB
24.txt AC 224 ms 39748 KB
25.txt AC 231 ms 39612 KB
26.txt AC 239 ms 44028 KB
27.txt AC 239 ms 44668 KB
28.txt AC 230 ms 38648 KB
29.txt AC 230 ms 39216 KB
30.txt AC 239 ms 41904 KB
31.txt AC 237 ms 42864 KB
32.txt AC 238 ms 44708 KB
33.txt WA 240 ms 45936 KB
34.txt AC 233 ms 40748 KB
35.txt WA 233 ms 39980 KB
36.txt WA 237 ms 42612 KB
37.txt WA 235 ms 42156 KB
38.txt WA 239 ms 44928 KB
39.txt WA 234 ms 39036 KB
40.txt WA 237 ms 40980 KB
41.txt WA 240 ms 44528 KB
42.txt WA 237 ms 42620 KB
43.txt WA 234 ms 42060 KB
44.txt WA 345 ms 42720 KB
45.txt WA 235 ms 44016 KB
46.txt WA 230 ms 39880 KB
47.txt WA 232 ms 41348 KB
48.txt WA 240 ms 45988 KB
49.txt WA 234 ms 39168 KB
50.txt WA 230 ms 42620 KB
51.txt WA 233 ms 43500 KB
52.txt WA 239 ms 45308 KB
53.txt WA 233 ms 39188 KB
54.txt WA 241 ms 41388 KB
55.txt WA 236 ms 43120 KB
56.txt AC 229 ms 39064 KB
57.txt AC 232 ms 39536 KB
58.txt AC 232 ms 40564 KB
59.txt AC 237 ms 38420 KB
60.txt AC 232 ms 40968 KB
61.txt AC 233 ms 44024 KB
62.txt AC 227 ms 39160 KB
63.txt AC 71 ms 20752 KB
64.txt AC 71 ms 21076 KB
65.txt WA 70 ms 20564 KB
66.txt AC 71 ms 19088 KB
67.txt AC 70 ms 20692 KB
68.txt WA 71 ms 20692 KB
69.txt AC 70 ms 18132 KB
70.txt AC 70 ms 20052 KB
71.txt AC 70 ms 19412 KB
72.txt AC 70 ms 18900 KB
s1.txt AC 71 ms 21332 KB
s2.txt AC 70 ms 23312 KB