Submission #924481

#TimeUsernameProblemLanguageResultExecution timeMemory
924481Muhammad_AneeqToll (BOI17_toll)C++17
10 / 100
40 ms4692 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]={}; int bfs(int n,int tar) { 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; if (z==tar) return dist[z]; 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}); } } } return -1; } 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,-1); for (auto i:ord) cout<<(dist[i.second]==1e9+10?-1:dist[i.second])<<'\n'; } else if (k==1) { for (int i=0;i<n;i++) dist[i]=1e9+10,vis[i]=0; bfs(0,-1); for (auto i:ord) { if (dist[i.first]==1e9+10||dist[i.second]==1e9+10) cout<<-1<<endl; else cout<<dist[i.second]-dist[i.first]<<endl; } } else { for (auto i:ord) { for (int j=0;j<n;j++) dist[j]=1e9+10,vis[j]=0; cout<<bfs(i.first,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...