Submission #830616

#TimeUsernameProblemLanguageResultExecution timeMemory
830616JohannRace (IOI11_race)C++14
Compilation error
0 ms0 KiB
#include "grader.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define vi vector<ll> #define pii pair<ll, ll> #define vpii vector<pii> #define vvpii vector<vpii> #define mll map<ll, ll> #define vmll vector<mll> void root(vvpii & adj, int v, int p, vi & height, vi & dist) { height[v] = height[p] + 1; ll u,d; for (pii e : adj[v]) { tie(u,d) = e; if (u == p) continue; dist[u] = dist[v] + d; root(adj, u, v, height, dist); } } void InOrUpdate(mll & DV, ll dv, ll hv) { if (DV.find(dv) == DV.end()) DV[dv] = hv; else DV[dv] = min(DV[dv], hv); } void solve(vvpii & adj, int v, vi & dist, vi & height, vmll & distVert, ll & ans, int K) { int maxSub = -1; for (pii e : adj[v]) { ll u = e.first; if (height[u] <= height[v]) continue; // parent; // distances können auch null sein... solve(adj, u, dist, height, distVert, ans, K); if (maxSub == -1 || distVert[maxSub].size() < distVert[u].size()) maxSub = u; } if (maxSub != -1) { // not a leaf! ll k = K + 2 * dist[v]; swap(distVert[v], distVert[maxSub]); for (pii e : adj[v]) { ll u = e.first; if (height[u] < height[v] && u != maxSub) continue; // parent or maxSubTree for (pii bla : distVert[u]) { if (distVert[v].find(k - bla.first) != distVert[v].end()) { ans = min(ans, bla.second + distVert[v][k - bla.first] - 2 * height[v]); } } for (pii bla : distVert [u]) InOrUpdate(distVert[v], bla.first, bla.second); distVert[u].clear(); } } InOrUpdate(distVert[v], dist[v], height[v]); if (distVert[v].find(K + dist[v]) != distVert[v].end()) ans = min(ans, distVert[v][K + dist[v]] - height[v]); // printf("Vertex: %d\n", v); for (pii bla : distVert[v]) { printf("%d - %d\n", bla.first, bla.second); } cout << endl; } int best_path(int N, int K, int H[][2], int L[]){ vvpii adj(N); for (int i = 0,a,b; i < N-1; ++i) { a = H[i][0]; b = H[i][1]; adj[a].push_back({b, L[i]}); adj[b].push_back({a, L[i]}); } vi height(N, 0), dist(N, 0); root(adj, 0, 0, height, dist); vmll distVert(N); // { dist[v], height[v] } pairs! ll ans = INT_MAX; solve(adj, 0, dist, height, distVert,ans, K); return (ans == INT_MAX) ? -1 : ans; }

Compilation message (stderr)

race.cpp:1:10: fatal error: grader.h: No such file or directory
    1 | #include "grader.h"
      |          ^~~~~~~~~~
compilation terminated.