Submission #1160469

#TimeUsernameProblemLanguageResultExecution timeMemory
1160469sofija6Voting Cities (NOI22_votingcity)C++20
20 / 100
1094 ms7628 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 (p[l]==-1 || ((1<<l)&next.second)) continue; if (dist[next.first][j|(1<<l)]>cur+next.second*(9-l)/10+p[l]) { dist[next.first][j|(1<<l)]=cur+next.second*(9-l)/10+p[l]; 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}); } cin >> q; while (q--) { cin >> s; s++; for (ll i=0;i<5;i++) cin >> p[i]; Dijkstra(); ll ans=llinf; for (ll i=0;i<(1<<5);i++) ans=min(ans,dist[s][i]); 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...