Submission #867736

#TimeUsernameProblemLanguageResultExecution timeMemory
867736epicci23Autobus (COCI22_autobus)C++17
70 / 70
145 ms10168 KiB
#include "bits/stdc++.h" using namespace std; #define pb push_back #define endl "\n" #define int long long #define sz(x) ((int)(x).size()) #define all(x) (x).begin(),(x).end() void solve(){ int n,m; cin >> n >> m; int dp[n+5][n+5][n+5]; int matr[n+5][n+5]; memset(dp,-1,sizeof(dp)); memset(matr,-1,sizeof(matr)); for(int i=1;i<=m;i++){ int a,b,c; cin >> a >> b >> c; if(matr[a][b]==-1) matr[a][b]=c; else matr[a][b]=min(matr[a][b],c); } for(int i=1;i<=n;i++) matr[i][i]=0; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) dp[i][j][1]=matr[i][j]; int k,q; cin >> k >> q; for(int a=2;a<=min(k,n);a++){ for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ for(int u=1;u<=n;u++){ if(dp[i][u][a-1] == -1 || matr[u][j] == -1) continue; if(dp[i][j][a]==-1) dp[i][j][a]=dp[i][u][a-1]+matr[u][j]; else dp[i][j][a]=min(dp[i][j][a],dp[i][u][a-1]+matr[u][j]); } } } } while(q--){ int a,b; cin >> a >> b; int ans=-1; for(int i=1;i<=min(k,n);i++){ if(dp[a][b][i]==-1) continue; if(ans==-1) ans=dp[a][b][i]; else ans=min(ans,dp[a][b][i]); } cout << ans << endl; } } int32_t main(){ cin.tie(0); ios::sync_with_stdio(0); int t=1;//cin >> t; while(t--) solve(); 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...