Submission #1315011

#TimeUsernameProblemLanguageResultExecution timeMemory
1315011huypham2009Cities (BOI16_cities)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; // #define int long long const int maxn=1e5+5; const long long inf=1e18; int n,m,k,imcity[10]; long long dp[35][maxn]; vector<pair<int,int>>g[maxn]; int MASK(int x) { return 1<<x; } int fullmask(int x) { return (1<<x)-1; } int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); // freopen("cities.inp","r",stdin); freopen("cities.out","w",stdout); cin>>n>>k>>m; for(int i=1;i<=k;i++) cin>>imcity[i]; for(int i=1;i<=m;i++) { int u,v,w; cin>>u>>v>>w; g[u].push_back({v,w}); g[v].push_back({u,w}); } for(int i=1;i<=fullmask(k);i++) { for(int j=1;j<=n;j++) { dp[i][j]=inf; } } priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>pq; for(int i=1;i<=k;i++) { int curmask=MASK(i-1); dp[curmask][imcity[i]]=0; pq.push({0,imcity[i]}); while(pq.size()) { pair<int,int>res=pq.top(); pq.pop(); int u=res.second,w=res.first; if(w>dp[curmask][u]) continue; for(pair<int,int> v:g[u]) { if(dp[curmask][v.first]>w+v.second) { dp[curmask][v.first]=w+v.second; pq.push({dp[curmask][v.first],v.first}); } } } } // cout<<MASK(k); for(int mask=1;mask<MASK(k);mask++) { long long hi=inf; for(int submask=mask;submask>0;submask=(submask-1)&mask) { int other=mask^submask; if(submask<other) break; for(int j=1;j<=n;j++) { if(dp[submask][j]+dp[other][j]<dp[mask][j]) { dp[mask][j]=dp[submask][j]+dp[other][j]; hi=min(hi,dp[mask][j]); } } } for(int j=1;j<=n;j++) { if(dp[mask][j]!=inf&&dp[mask][j]-hi<=10000) { pq.push({dp[mask][j],j}); } } while(pq.size()) { pair<int,int>res=pq.top(); pq.pop(); int u=res.second,w=res.first; if(w>dp[mask][u]) continue; for(pair<int,int> v:g[u]) { if(dp[mask][v.first]>w+v.second) { dp[mask][v.first]=w+v.second; pq.push({dp[mask][v.first],v.first}); } } } } int ans=inf; for(int i=1;i<=n;i++) { // cout<<dp[fullmask(k)][i]<<' '; ans=min(ans,dp[fullmask(k)][i]); } cout<<ans; return 0; }

Compilation message (stderr)

cities.cpp: In function 'int32_t main()':
cities.cpp:100:13: warning: overflow in conversion from 'long long int' to 'int' changes value from '1000000000000000000' to '-1486618624' [-Woverflow]
  100 |     int ans=inf;
      |             ^~~
cities.cpp:104:16: error: no matching function for call to 'min(int&, long long int&)'
  104 |         ans=min(ans,dp[fullmask(k)][i]);
      |             ~~~^~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/13/algorithm:60,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:51,
                 from cities.cpp:1:
/usr/include/c++/13/bits/stl_algobase.h:233:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)'
  233 |     min(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/13/bits/stl_algobase.h:233:5: note:   template argument deduction/substitution failed:
cities.cpp:104:16: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'long long int')
  104 |         ans=min(ans,dp[fullmask(k)][i]);
      |             ~~~^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13/bits/stl_algobase.h:281:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)'
  281 |     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/13/bits/stl_algobase.h:281:5: note:   template argument deduction/substitution failed:
cities.cpp:104:16: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'long long int')
  104 |         ans=min(ans,dp[fullmask(k)][i]);
      |             ~~~^~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/13/algorithm:61:
/usr/include/c++/13/bits/stl_algo.h:5775:5: note: candidate: 'template<class _Tp> constexpr _Tp std::min(initializer_list<_Tp>)'
 5775 |     min(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/13/bits/stl_algo.h:5775:5: note:   template argument deduction/substitution failed:
cities.cpp:104:16: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
  104 |         ans=min(ans,dp[fullmask(k)][i]);
      |             ~~~^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13/bits/stl_algo.h:5785:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::min(initializer_list<_Tp>, _Compare)'
 5785 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/13/bits/stl_algo.h:5785:5: note:   template argument deduction/substitution failed:
cities.cpp:104:16: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
  104 |         ans=min(ans,dp[fullmask(k)][i]);
      |             ~~~^~~~~~~~~~~~~~~~~~~~~~~~