Submission #1226397

#TimeUsernameProblemLanguageResultExecution timeMemory
1226397chaeryeongTruck Driver (IOI23_deliveries)C++20
29 / 100
90 ms7752 KiB
#include "deliveries.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; vector <pair <int, ll>> adj[1001]; ll t[1001], sum[1001]; void init (int n, vector <int> u, vector <int> v, vector <int> w, vector <int> T) { for (int i = 0; i < n; i++) { t[i] = T[i]; } for (int i = 0; i < n - 1; i++) { adj[u[i]].push_back({v[i], w[i]}); adj[v[i]].push_back({u[i], w[i]}); } } void calc (int pos, int par) { sum[pos] = t[pos]; for (auto [j, w] : adj[pos]) { if (j != par) { calc(j, pos); sum[pos] += sum[j]; } } } ll get (int pos, int par) { ll ret = 0; for (auto [j, w] : adj[pos]) { if (j != par) { ret += get(j, pos); ret += w * min(sum[j], sum[0] - sum[j]) * 2; } } for (auto [j, w] : adj[pos]) { if (j != par) { if (sum[j] * 2 > sum[0]) { ret += 2 * w; } } } return ret; } ll max_time (int s, int x) { t[s] = x; calc(0, -1); return get(0, -1); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...