Submission #703965

#TimeUsernameProblemLanguageResultExecution timeMemory
703965willychanAutobus (COCI22_autobus)C++14
70 / 70
106 ms6940 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; //#include<bits/extc++.h> //__gnu_pbds vector<vector<ll> > dis; int n,m; vector<vector<ll> > ans; void pow(int p) { ans.resize(n); for(int i=0; i<n; i++) ans[i].resize(n,1e17); for(int i=0;i<n;i++) ans[i][i]=0; vector<vector<ll> > og; while(p) { if(p&1) { og = ans; for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { for(int k=0; k<n; k++) { og[i][j] = min(og[i][j],ans[i][k]+dis[k][j]); } } } ans = og; } og = dis; for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { for(int k=0; k<n; k++) { og[i][j] = min(og[i][j],dis[i][k]+dis[k][j]); } } } dis = og; p>>=1; } } int main() { ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0); cin>>n>>m; dis.resize(n); for(int i=0; i<n; i++) dis[i].resize(n,1e17); for(int i=0; i<n; i++) dis[i][i]=0; for(int i=0; i<m; i++) { ll a,b,c; cin>>a>>b>>c; a--;b--; dis[a][b] = min(dis[a][b],c); } int k,q;cin>>k>>q; pow(k); while(q--){ int a,b;cin>>a>>b; a--;b--; if(ans[a][b]>5e16){ cout<<-1<<"\n"; }else{ cout<<ans[a][b]<<"\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...