Submission #585394

#TimeUsernameProblemLanguageResultExecution timeMemory
585394MrDebooRace (IOI11_race)C++17
Compilation error
0 ms0 KiB
#include "race.h" #include <bits/stdc++.h> using namespace std; vector<pair<int,int>>vct[500000]; pair<pair<long long,long long>,map<long long,long long>>pr[500000]; long long ans=LONG_LONG_MAX,k; vector<int>viss(500000); int cnt=0; void dfs(int in){ cnt++; assert(!viss[in]); viss[in]=1; if(vct[in].empty()){ pr[in].second[0]=0; return; } for(auto &i:vct[in])dfs(i.first); int f=0,g=0; for(int i=0;i<vct[in].size();i++){ if(pr[vct[in][i].first].second.size()>f){ f=pr[vct[in][i].first].second.size(); g=i; } } swap(pr[in],pr[vct[in][g].first]); pr[in].first.first+=vct[in][g].second; pr[in].first.second++; if(!pr[in].second.count(-pr[in].first.first))pr[in].second[-pr[in].first.first]=-pr[in].first.second; else pr[in].second[-pr[in].first.first]=min(pr[in].second[-pr[in].first.first],-pr[in].first.second); if(pr[in].second.count(k-pr[in].first.first)){ ans=min(ans,(long long)pr[in].second[k-pr[in].first.first]+pr[in].first.second); } for(int i=0;i<vct[in].size();i++){ if(i==g)continue; vector<pair<int,int>>V; for(auto &w:pr[vct[in][i].first].second){ long long a=w.first+pr[vct[in][i].first].first.first+vct[in][i].second,b=w.second+pr[vct[in][i].first].first.second+1; long long G=k-a-pr[in].first.first; if(pr[in].second.count(G)){ ans=min(ans,(long long)pr[in].second[G]+pr[in].first.second+b); } a-=pr[in].first.first,b-=pr[in].first.second; V.push_back({a,b}); } for(auto &w:V){ if(!pr[in].second.count(w.first))pr[in].second[w.first]=w.second; else pr[in].second[w.first]=min(pr[in].second[w.first],w.second); } } } int best_path(int n, int K, int h[][2], int l[]){ k=K; vector<pair<int,int>>vec[n]; for(int i=0;i<n-1;i++){ vec[h[i][0]].push_back({h[i][1],l[i]}); vec[h[i][1]].push_back({h[i][0],l[i]}); } deque<int>dq={0}; vector<bool>vis(n); vis[0]=1; int c=0; while(dq.size()){ c++; int a=dq.front(); dq.pop_front(); for(auto &i:vec[a]){ if(!vis[i.first]){ vis[i.first]=1; vct[a].push_back(i); dq.push_back(i.first); } } } assert(c==n); dfs(0); return (ans==LONG_LONG_MAX?-1:ans); }

Compilation message (stderr)

race.cpp: In function 'void dfs(int)':
race.cpp:19:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   19 |     for(int i=0;i<vct[in].size();i++){
      |                 ~^~~~~~~~~~~~~~~
race.cpp:20:46: warning: comparison of integer expressions of different signedness: 'std::map<long long int, long long int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   20 |         if(pr[vct[in][i].first].second.size()>f){
      |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
race.cpp:33:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |     for(int i=0;i<vct[in].size();i++){
      |                 ~^~~~~~~~~~~~~~~
race.cpp:47:76: error: no matching function for call to 'min(std::map<long long int, long long int>::mapped_type&, int&)'
   47 |             else pr[in].second[w.first]=min(pr[in].second[w.first],w.second);
      |                                                                            ^
In file included from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 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:47:76: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
   47 |             else pr[in].second[w.first]=min(pr[in].second[w.first],w.second);
      |                                                                            ^
In file included from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 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:47:76: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
   47 |             else pr[in].second[w.first]=min(pr[in].second[w.first],w.second);
      |                                                                            ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from race.cpp:2:
/usr/include/c++/10/bits/stl_algo.h:3468:5: note: candidate: 'template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)'
 3468 |     min(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3468:5: note:   template argument deduction/substitution failed:
race.cpp:47:76: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
   47 |             else pr[in].second[w.first]=min(pr[in].second[w.first],w.second);
      |                                                                            ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from race.cpp:2:
/usr/include/c++/10/bits/stl_algo.h:3474:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)'
 3474 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3474:5: note:   template argument deduction/substitution failed:
race.cpp:47:76: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
   47 |             else pr[in].second[w.first]=min(pr[in].second[w.first],w.second);
      |                                                                            ^