Submission #1160482

#TimeUsernameProblemLanguageResultExecution timeMemory
1160482sofija6Voting Cities (NOI22_votingcity)C++20
100 / 100
81 ms8888 KiB
#include <bits/stdc++.h> #define ll long long #define MAXN 5010 #define llinf 1e17 using namespace std; ll n,k,t[MAXN],p[10]; vector<pair<ll,ll> > G[MAXN]; ll dist[MAXN][50]; void Dijkstra() { for (ll i=1;i<=n;i++) { for (ll j=0;j<(1<<5);j++) dist[i][j]=llinf; } priority_queue<pair<ll,pair<ll,ll> >,vector<pair<ll,pair<ll,ll> > >,greater<pair<ll,pair<ll,ll> > > > q; for (ll i=1;i<=k;i++) { dist[t[i]][0]=0; q.push({0,{t[i],0}}); } while (!q.empty()) { ll cur=q.top().first,i=q.top().second.first,j=q.top().second.second; q.pop(); if (dist[i][j]!=cur) continue; for (auto next : G[i]) { if (dist[next.first][j]>cur+next.second) { dist[next.first][j]=cur+next.second; q.push({dist[next.first][j],{next.first,j}}); } for (ll l=0;l<5;l++) { if (((1<<l)&j)) continue; if (dist[next.first][j|(1<<l)]>cur+next.second*(9-l)/10) { dist[next.first][j|(1<<l)]=cur+next.second*(9-l)/10; q.push({dist[next.first][j|(1<<l)],{next.first,j|(1<<l)}}); } } } } } int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); ll e,u,v,c,q,s; cin >> n >> e >> k; for (ll i=1;i<=k;i++) { cin >> t[i]; t[i]++; } for (ll i=1;i<=e;i++) { cin >> u >> v >> c; u++; v++; G[v].push_back({u,c}); } Dijkstra(); cin >> q; while (q--) { cin >> s; s++; for (ll i=0;i<5;i++) cin >> p[i]; ll ans=llinf; for (ll i=0;i<(1<<5);i++) { ll price=0; bool ok=true; for (ll j=0;j<5;j++) { if (((1<<j)&i) && p[j]==-1) { ok=false; break; } if (((1<<j)&i)) price+=p[j]; } if (!ok) continue; ans=min(ans,dist[s][i]+price); } cout << (ans==llinf?-1 : ans) << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...