Submission #6420034


Source Code Expand

#include<bits/stdc++.h>
using namespace std;

#define FOR(i, a, b) for(int i = a; i < b; ++i)
#define REP(i, n) FOR(i, 0, n)
#define _ << " " <<
#define sz(x) ((int) x.size())
#define pb(x) push_back(x)
#define TRACE(x) cerr << #x << " = " << x << endl

typedef long long ll;
typedef pair<int, int> point;

const int MAXN = 1e5 + 5;

int n, sz[MAXN];
vector <point> E[MAXN];
ll dist[MAXN], sol;
vector <int> centroid;

void dfs(int x, int p) {
  sz[x] = 1;
  int mx = 0;
  for (auto e : E[x]) {
    if(e.first == p) continue;

    dfs(e.first, x);
    sz[x] += sz[e.first];
    mx = max(mx, sz[e.first]);
  }

  if(max(mx, n - sz[x]) <= n / 2)
    centroid.push_back(x);
}

void dfs_dist(int x, int p = -1){
  sz[x] = 1;
  for(auto e : E[x]){
    if(e.first == p) continue;
    dist[e.first] = dist[x] + e.second;
    dfs_dist(e.first, x);
    sol += 2LL * e.second * min( sz[e.first], n - sz[e.first] );
    sz[x] += sz[e.first];
  }
}

ll solve(int x){
  sol = 0;
  dfs_dist(x);

  ll mn = 1e18;
  for(auto e : E[x])
    mn = min(mn, (ll)e.second);

  if(sz(centroid) == 1)
    return sol - mn;

  for(auto e : E[x])
    if(e.first == centroid[0] || e.first == centroid[1])
      return sol - e.second;
}

int main(){
  ios_base::sync_with_stdio(false); cin.tie(0);

  cin >> n;
  REP(i, n - 1){
    int a, b, c;
    cin >> a >> b >> c;
    a --; b --;
    E[a].pb(point(b, c));
    E[b].pb(point(a, c));
  }

  dfs(0, 0);
  ll sol = 1e18;
  for(auto it : centroid)
    sol = min(sol, solve(it));
  cout << sol;
}

Submission Info

Submission Time
Task D - Tree and Hamilton Path
User Milki
Language C++14 (GCC 5.4.1)
Score 1100
Code Size 1596 Byte
Status AC
Exec Time 67 ms
Memory 12288 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 1100 / 1100
Status
AC × 2
AC × 38
Set Name Test Cases
Sample sample_01.txt, sample_02.txt
All sample_01.txt, sample_02.txt, sample_01.txt, sample_02.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_30.txt, subtask_1_31.txt, subtask_1_32.txt, subtask_1_33.txt, subtask_1_34.txt
Case Name Status Exec Time Memory
sample_01.txt AC 2 ms 2560 KB
sample_02.txt AC 2 ms 2560 KB
subtask_1_01.txt AC 2 ms 2560 KB
subtask_1_02.txt AC 47 ms 6912 KB
subtask_1_03.txt AC 28 ms 4992 KB
subtask_1_04.txt AC 52 ms 7296 KB
subtask_1_05.txt AC 32 ms 6400 KB
subtask_1_06.txt AC 21 ms 4732 KB
subtask_1_07.txt AC 23 ms 4608 KB
subtask_1_08.txt AC 29 ms 4992 KB
subtask_1_09.txt AC 17 ms 4224 KB
subtask_1_10.txt AC 8 ms 3712 KB
subtask_1_11.txt AC 15 ms 4096 KB
subtask_1_12.txt AC 55 ms 7424 KB
subtask_1_13.txt AC 59 ms 7424 KB
subtask_1_14.txt AC 54 ms 7424 KB
subtask_1_15.txt AC 60 ms 7424 KB
subtask_1_16.txt AC 55 ms 7424 KB
subtask_1_17.txt AC 62 ms 7424 KB
subtask_1_18.txt AC 56 ms 7424 KB
subtask_1_19.txt AC 64 ms 7424 KB
subtask_1_20.txt AC 64 ms 7424 KB
subtask_1_21.txt AC 59 ms 7424 KB
subtask_1_22.txt AC 59 ms 7552 KB
subtask_1_23.txt AC 64 ms 10880 KB
subtask_1_24.txt AC 63 ms 11904 KB
subtask_1_25.txt AC 54 ms 7424 KB
subtask_1_26.txt AC 55 ms 8832 KB
subtask_1_27.txt AC 63 ms 11520 KB
subtask_1_28.txt AC 55 ms 7552 KB
subtask_1_29.txt AC 64 ms 12288 KB
subtask_1_30.txt AC 67 ms 10880 KB
subtask_1_31.txt AC 48 ms 7416 KB
subtask_1_32.txt AC 48 ms 7416 KB
subtask_1_33.txt AC 29 ms 6260 KB
subtask_1_34.txt AC 41 ms 7668 KB