Submission #1272203

#TimeUsernameProblemLanguageResultExecution timeMemory
1272203coderpemulaVoting Cities (NOI22_votingcity)C++20
100 / 100
80 ms8396 KiB
#include <bits/stdc++.h> #define int long long #define pii pair<int,int> #define fi first #define se second #define pb push_back using namespace std; vector<pii>v[5000]; priority_queue<pair<pii,int>,vector<pair<pii,int>>,greater<pair<pii,int>>>pq; int jarak[5000][32]; // 2^4 // 11111 signed main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int n,m,k,t,i,j,c,anu[5],s; cin>>n>>m>>k; for(i=0;i<n;i++){ for(j=0;j<32;j++) jarak[i][j] = 1e18; } for(i=1;i<=k;i++){ cin>>j; pq.push({{0,0},j}); jarak[j][0] = 0; } for(i=1;i<=m;i++){ cin>>j>>t>>c; v[t].pb({j,c}); } while(!pq.empty()){ int node = pq.top().se, st = pq.top().fi.se, jar = pq.top().fi.fi; pq.pop(); //cout<<node<<" "<<st<<" "<<jar<<endl; if(jarak[node][st] != jar) continue; for(auto x:v[node]){ if(jarak[x.fi][st] > jar+x.se){ jarak[x.fi][st] = jar+x.se; pq.push({{jarak[x.fi][st],st},x.fi}); } for(i=0;i<5;i++){ if(!(st&(1<<i))){ int cost = x.se - x.se/10*(i+1), now = (st|(1<<i)); if(jarak[x.fi][now] > jar+cost){ jarak[x.fi][now] = jar+cost; pq.push({{jarak[x.fi][now],now},x.fi}); } } } } } //cout<<jarak[4][16]<<endl; cin>>t; while(t--){ cin>>s; for(i=0;i<5;i++) cin>>anu[i]; int ans = 1e18; for(i=0;i<32;i++){ if(jarak[s][i] == 1e18) continue; int temp = 0; for(j=0;j<5;j++){ if(i&(1<<j)){ if(anu[j] == -1){ temp = -1; break; } temp += anu[j]; } } // cout<<i<<" "<<jarak[s][i]<<endl; if(temp != -1) ans = min(ans,jarak[s][i]+temp); } if(ans == 1e18) ans = -1; cout<<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...