Submission #1299738

#TimeUsernameProblemLanguageResultExecution timeMemory
1299738azamuraiOlympic Bus (JOI20_ho_t4)C++20
0 / 100
26 ms1736 KiB
#include <bits/stdc++.h> #define int long long #define fi first #define se second #define mp make_pair #define Sz(x) (int)x.size() using namespace std; const int N = 205; const int inf = 1e18; int n, m, dist1[N][N], dist2[N][N]; int dp[2][N][N]; void solve() { cin >> n >> m; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { dist1[i][j] = dist2[i][j] = inf; dp[0][i][j] = dp[1][i][j] = inf; } } for (int i = 1; i <= m; i++) { int u, v, c, d; cin >> u >> v >> c >> d; dist1[u][v] = min(dist1[u][v], c); dist2[v][u] = min(dist2[v][u], c + d); } for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { dp[0][i][j] = dist1[i][j]; dp[1][i][j] = dist2[i][j]; } } for (int i = 1; i <= n; i++) { for (int v = 1; v <= n; v++) { for (int u = 1; u <= n; u++) { if (i == v || v == u || i == u) continue; dp[0][v][u] = min(dp[0][v][u], dp[0][v][i] + dp[0][i][u]); dp[1][v][u] = min(dp[1][v][u], dp[0][v][i] + dp[1][i][u]); dp[1][v][u] = min(dp[1][v][u], dp[1][v][i] + dp[0][i][u]); } } } int ans = inf; ans = min(ans, dp[0][1][n] + dp[0][n][1]); ans = min(ans, dp[1][1][n] + dp[0][n][1]); ans = min(ans, dp[0][1][n] + dp[1][n][1]); if (ans == inf) cout << -1; else cout << ans; } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); int tt = 1; // cin >> tt; while (tt--) { solve(); // cout << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...