Submission #649941

#TimeUsernameProblemLanguageResultExecution timeMemory
649941KoalaMuchRace (IOI11_race)C++14
Compilation error
0 ms0 KiB
#include "race.h" #include<iostream> #include<utility> #include<vector> #include<map> #include <cstring> using namespace std; const long long N = 2e5+5; long long sz[N]; long long st[N]; long long ft[N]; long long ver[N]; long long orig_len[N]; long long orig_sum[N]; map<long long,long long> mem; vector<pair<long long,long long>> g[N]; long long t; long long ans = 1e9; bool vis[N]; void preprocess(long long u,long long len,long long sum,long long p){ sum = min(sum,2000001); if(vis[u]) return; vis[u] = true; ++t; st[u] = t; ver[t] = u; orig_sum[u] = sum; orig_len[u] = len; sz[u] = 1; for(auto &x:g[u]){ if(x.first!=p){ preprocess(x.first,len+1,sum+x.second,u); sz[u]+=sz[x.first]; } } ft[u] = t; } void solve(long long u,long long target,long long p,bool keep){ if(vis[u]) return; vis[u] = true; long long mx = -1,big_child = -1,del_sum = orig_sum[u],del_len = orig_len[u]; for(auto &x:g[u]) if(x.first!=p&&sz[x.first]>mx) mx = sz[x.first],big_child = x.first; for(auto &x:g[u]){ if(x.first!=p&&x.first!=big_child){ solve(x.first,target,u,false); } } if(big_child!=-1){ solve(big_child,target,u,true); } long long need = target-orig_sum[u]+2*del_sum; if(need>=0&&mem.find(need)!=mem.end()) ans = min(ans,mem[need]+orig_len[u]-2*del_len); if(mem.find(orig_sum[u])==mem.end()) mem[orig_sum[u]] = orig_len[u]; mem[orig_sum[u]] = min(mem[orig_sum[u]],orig_len[u]); for(auto &x:g[u]){ if(x.first!=p&&x.first!=big_child){ for(long long i=st[x.first];i<=ft[x.first];i++){ long long v = ver[i]; need = target-orig_sum[v]+2*del_sum; if(need>=0&&mem.find(need)!=mem.end()) ans = min(ans,mem[need]+orig_len[v]-2*del_len); if(mem.find(orig_sum[v])==mem.end()) mem[orig_sum[v]] = orig_len[v]; mem[orig_sum[v]] = min(mem[orig_sum[v]],orig_len[v]); } } } if(!keep){ for(long long i=st[u];i<=ft[u];i++){ if(mem.find(orig_sum[ver[i]])!=mem.end()) mem.erase(orig_sum[ver[i]]); } } } int best_path(int N, int K, int H[][2], int L[]) { for(long long i=0;i<N;i++) g[H[i][0]].push_back({H[i][1],L[i]}),g[H[i][1]].push_back({H[i][0],L[i]}); preprocess(0,0,0,0); memset(vis,false,sizeof vis); solve(0,K,0,true); if(ans>=N) return -1; return ans; } //int n, K; //int H[N][2]; //int L[N]; //void read_input() //{ // long long i; // scanf("%d %d",&n,&K); // for(i=0; i<n-1; i++) // scanf("%d %d %d",&H[i][0],&H[i][1],&L[i]); //} //int main(){ // int ans; // read_input(); // ans = best_path(n,K,H,L); // //for(int i=0;i<n;i++) cout << st[i] << " " << ft[i] << "\n"; // cout << ans << "\n"; // return 0; //} /* 11 12 0 1 3 0 2 4 2 3 5 3 4 4 4 5 6 0 6 3 6 7 2 6 8 5 8 9 6 8 10 7 3 3 0 1 1 1 2 1 */

Compilation message (stderr)

race.cpp: In function 'void preprocess(long long int, long long int, long long int, long long int)':
race.cpp:21:26: error: no matching function for call to 'min(long long int&, int)'
   21 |     sum = min(sum,2000001);
      |                          ^
In file included from /usr/include/c++/10/bits/char_traits.h:39,
                 from /usr/include/c++/10/ios:40,
                 from /usr/include/c++/10/ostream:38,
                 from /usr/include/c++/10/iostream:39,
                 from race.cpp:2:
/usr/include/c++/10/bits/stl_algobase.h:230:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)'
  230 |     min(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:230:5: note:   template argument deduction/substitution failed:
race.cpp:21:26: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
   21 |     sum = min(sum,2000001);
      |                          ^
In file included from /usr/include/c++/10/bits/char_traits.h:39,
                 from /usr/include/c++/10/ios:40,
                 from /usr/include/c++/10/ostream:38,
                 from /usr/include/c++/10/iostream:39,
                 from race.cpp:2:
/usr/include/c++/10/bits/stl_algobase.h:278:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)'
  278 |     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:278:5: note:   template argument deduction/substitution failed:
race.cpp:21:26: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
   21 |     sum = min(sum,2000001);
      |                          ^