Submission #206716

#TimeUsernameProblemLanguageResultExecution timeMemory
206716SaboonOlympic Bus (JOI20_ho_t4)C++14
5 / 100
1090 ms1912 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; typedef pair<int,int> pii; const int maxn = 200 + 10; const int maxm = 5e4 + 10; const int inf = 1e9; int n, m; int a[maxm], b[maxm], c[maxm], d[maxm]; vector<pair<int,int> > g[maxn]; int dp[maxn], pd[maxn], cn[maxn], pr[maxn]; bool mark[maxn]; int dijkstra(int src, int snk){ memset(dp, 63, sizeof dp); memset(mark, 0, sizeof mark); memset(cn, 0, sizeof cn); dp[src] = 0; for (int i = 0; i < n; i++){ int v = -1; for (int j = 1; j <= n; j++) if (!mark[j] and (v == -1 or dp[v] > dp[j])) v = j; if (v == -1) break; mark[v] = 1; for (auto e : g[v]){ int idx = e.second; int u = e.first, w = c[idx]; if (dp[u] > dp[v] + w){ dp[u] = dp[v] + w; pr[u] = idx; cn[u] = 1; } else if (dp[u] == dp[v] + w) cn[u] ++; } } return dp[snk]; } int reshpa(int src, int snk){ for (int i = 0; i < m; i++) g[b[i]].push_back({a[i], i}); for (int i = 1; i <= n; i++) pd[i] = dp[i]; int ret = dijkstra(snk, src); for (int i = 1; i <= n; i++){ swap(dp[i], pd[i]); g[i].clear(); } return ret; } int shpa(int src, int snk){ for (int i = 0; i < m; i++) g[a[i]].push_back({b[i], i}); int ret = dijkstra(src, snk); for (int i = 1; i <= n; i++) g[i].clear(); return ret; } bool visited[maxm]; ll ans[maxm]; void solve(int src, int snk){ reshpa(src, snk); int now = shpa(src, snk); for (int i = 0; i < m; i++){ swap(a[i], b[i]); ans[i] += shpa(src, snk); swap(a[i], b[i]); } } int main(){ ios_base::sync_with_stdio(false); cin >> n >> m; for (int i = 0; i < m; i++) cin >> a[i] >> b[i] >> c[i] >> d[i]; ll answer = shpa(1, n) + shpa(n, 1); solve(1, n); solve(n, 1); ll t = answer; for (int i = 0; i < m; i++){ answer = min(answer, ans[i] + d[i]); t = min(t, ans[i]); } if (t >= inf) return cout << -1 << endl, 0; cout << answer << endl; }

Compilation message (stderr)

ho_t4.cpp: In function 'void solve(int, int)':
ho_t4.cpp:74:6: warning: unused variable 'now' [-Wunused-variable]
  int now = shpa(src, snk);
      ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...