Submission #924463

#TimeUsernameProblemLanguageResultExecution timeMemory
924463Faisal_SaqibToll (BOI17_toll)C++17
0 / 100
418 ms524288 KiB
#include <iostream> #include <vector> #include <queue> using namespace std; const int N=5e4; vector<pair<int,int>> ma[N],query[N]; vector<int> MinDist[N]; int dist[N]; int main() { cin.tie(0); cout.tie(0); ios::sync_with_stdio(0); int k,n,m,q; cin>>k>>n>>m>>q; // q<=1e4 for(int j=0;j<m;j++) { int a,b,t; cin>>a>>b>>t; ma[a].push_back({b,t}); } for(int i=n-1;i>=0;i--) { MinDist[i].push_back(0); for(int j=i+1;j<n;j++) MinDist[i].push_back(1e9); } for(int lp=0;lp<q;lp++) { int x,y; cin>>x>>y; priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> pq; for(int i=1;i<=n;i++) dist[i]=1e9; dist[x]=0; int ans=-1; pq.push({dist[x],x}); while(pq.size()) { auto it=pq.top(); pq.pop(); if(it.second==y) { ans=it.first; break; } if(dist[it.second]==it.first) { for(auto [v,w]:ma[it.second]) { if(dist[v]>(it.first+w) and v<=y) { dist[v]=it.first+w; pq.push({dist[v],v}); } } } } cout<<ans<<endl; } 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...