Submission #1286717

#TimeUsernameProblemLanguageResultExecution timeMemory
1286717ian_otoniRace (IOI11_race)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; vector<vector<pair<int, int>>> adj; vector<int> sum_root_to_i; vector<int> distance_root_to_i; int ans = 999999; void pre_process(int node, int father, int sum, int distance){ sum_root_to_i[node] = sum; distance_root_to_i[node] = distance; for(auto p : adj[node]){ if(p.first!=father) pre_process(p.first, node, sum+p.second, distance+1); } } map<int, int> solve(int node, int p, int k){ //k = sum_root_to_i[a] + sum_root_to_i[b] - 2*sum_root_to_i[u] //sum_root_to_i[b] = k - sum_root_to_i[a] + 2*sum_root_to_i[u] map<int, int> map_n; //soma, distancia for(const auto &[son, other] : adj[node]){ if(son!=p){ map<int, int> map_s = solve(son, node, k); if(map_s.find(k+sum_root_to_i[node])!=map_s.end()) ans = min(ans, map_s[k+sum_root_to_i[node]]-distance_root_to_i[node]); if(map_s.size()>=map_n.size()) swap(map_n, map_s); for(const auto &[sum, dist] : map_s){ int target = k - sum + 2*sum_root_to_i[node]; if(map_n.find(target)!=map_n.end()) ans = min(ans, dist+map_n[target]-2*distance_root_to_i[node]); } for(const auto &[sum, dist] : map_s){ if(map_n.find(sum)==map_n.end()) map_n[sum] = dist; else map_n[sum] = min(map_n[sum], dist); } } } if(map_n.find(sum_root_to_i[node])!=map_n.end()) map_n[sum_root_to_i[node]] = min(map_n[sum_root_to_i[node]], distance_root_to_i[node]); else map_n[sum_root_to_i[node]] = distance_root_to_i[node]; return map_n; } int best_path(int N, int K, int H[][2], int L[]){ ans = 999999; adj.assign(N, vector<pair<int, int>>()); sum_root_to_i.assign(N, 0); distance_root_to_i.assign(N, 0); for(int i=0; i<N-1; i++){ int u = H[i][0]; int v = H[i][1]; int w = L[i]; adj[u].push_back({v, w}); adj[v].push_back({u, w}); } pre_process(0, -1, 0, 0); solve(0, -1, K) if(ans==999999) return -1; return ans; } int main(){ }

Compilation message (stderr)

race.cpp: In function 'int best_path(int, int, int (*)[2], int*)':
race.cpp:66:20: error: expected ';' before 'if'
   66 |     solve(0, -1, K)
      |                    ^
      |                    ;
   67 |     if(ans==999999) return -1;
      |     ~~