Submission #924471

#TimeUsernameProblemLanguageResultExecution timeMemory
924471Muhammad_AneeqToll (BOI17_toll)C++17
18 / 100
1877 ms524288 KiB
/* بسم الله الرحمن الرحيم Author: (:Muhammad Aneeq:) */ #include <iostream> #include <vector> #include <queue> #include <map> using namespace std; map<pair<int,int>,int>d; int const N=5e4+10; vector<pair<int,int>>nei[N]={}; int dist[N]={}; bool vis[N]={}; void bfs(int n) { priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>pq; pq.push({0,n}); dist[n]=0; while (pq.size()) { int z=pq.top().second; pq.pop(); if (vis[z]) continue; vis[z]=1; for (auto [j,w]:nei[z]) { if (dist[j]>dist[z]+w) { dist[j]=dist[z]+w; pq.push({dist[j],j}); } } } } inline void solve() { int n,m,k,o; cin>>k>>n>>m>>o; while (m--) { int a,b,t; cin>>a>>b>>t; nei[a].push_back({b,t}); } vector<pair<int,int>>ord; bool w=1; while (o--) { int x,y; cin>>x>>y; w=(w&&(x==0)); ord.push_back({x,y}); } if (w) { for (int i=0;i<n;i++) dist[i]=1e9+10,vis[i]=0; bfs(0); for (auto i:ord) cout<<(dist[i.second]==1e9+10?-1:dist[i.second])<<'\n'; } else { for (auto i:ord) { if (d.find(i)!=d.end()) { cout<<(d[i]==1e9+10?-1:d[i])<<'\n'; continue; } for (int j=0;j<n;j++) dist[j]=1e9+10,vis[j]=0; bfs(i.first); for (int j=0;j<n;j++) d[{i.first,j}]=dist[j]; cout<<(dist[i.second]==1e9+10?-1:dist[i.second])<<'\n'; } } } int main() { ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); solve(); }
#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...