/tmp/solutions/build/tree_diameter-slow.cpp:
    1|       |#include <common.h>
    2|       |prelude;
    3|       |
    4|       |namespace {
    5|       |
    6|       |constexpr int N = 5e5;
    7|       |
    8|       |struct edge {
    9|       |  int to;
   10|       |  int len;
   11|       |};
   12|       |
   13|       |int pa[N];
   14|       |std::vector<edge> ch[N];
   15|       |
   16|    140|def tree_diameter(int u, int p) -> std::pair<u64, int> {
   17|    140|  pa[u] = p;
   18|    140|  std::pair<u64, int> ans{0, u};
   19|    276|  for (let[v, len] : ch[u]) {
                     ^140
  ------------------
  |  Branch (19:20): [True: 66.35%, False: 33.65%]
  ------------------
   20|    276|    if (v != p) {
  ------------------
  |  Branch (20:9): [True: 50.00%, False: 50.00%]
  ------------------
   21|    138|      def res = tree_diameter(v, u);
   22|    138|      res.first += len;
   23|    138|      ans = std::max(ans, res);
   24|    138|    }
   25|    276|  }
   26|    140|  return ans;
   27|    140|}
   28|       |
   29|       |} // namespace
   30|       |
   31|      1|int main() {
   32|      1|  rd rd;
   33|      1|  wt wt;
   34|      1|  int n = rd.uh();
   35|     70|  for (int i = 1; i < n; ++i) {
                                       ^69
  ------------------
  |  Branch (35:19): [True: 98.57%, False: 1.43%]
  ------------------
   36|     69|    int a = rd.uh();
   37|     69|    int b = rd.uh();
   38|     69|    int c = rd.uw();
   39|     69|    ch[a].emplace_back(b, c);
   40|     69|    ch[b].emplace_back(a, c);
   41|     69|  }
   42|      1|  let[_, u] = tree_diameter(0, -1);
   43|      1|  let[d, v] = tree_diameter(u, -1);
   44|      1|  int c = 0;
   45|     13|  for (int i = v; i != -1; i = pa[i]) ++c;
                                         ^12        ^12
  ------------------
  |  Branch (45:19): [True: 92.31%, False: 7.69%]
  ------------------
   46|      1|  wt.ud(d);
   47|      1|  wt.uw(c);
   48|     13|  for (int i = v; i != -1; i = pa[i]) wt.uw(i);
                                         ^12        ^12
  ------------------
  |  Branch (48:19): [True: 92.31%, False: 7.69%]
  ------------------
   49|      1|#ifdef LOCAL
   50|     71|  for (int i = 0; i < n; ++i) ch[i].clear();
                                       ^70  ^70
  ------------------
  |  Branch (50:19): [True: 98.59%, False: 1.41%]
  ------------------
   51|      1|#endif
   52|      1|  return 0;
   53|      1|}