Submission #1181298

#TimeUsernameProblemLanguageResultExecution timeMemory
1181298blackslexCommuter Pass (JOI18_commuter_pass)C++17
15 / 100
2097 ms25320 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; using pii = pair<ll, ll>; int n, m, s, t, uu, vv, x, y, z; int main() { scanf("%d %d %d %d %d %d", &n, &m, &s, &t, &uu, &vv); vector<vector<pii>> v(n + 5, vector<pii>()); vector<ll> d(n + 5, 1e18), d2(n + 5, 1e18), d3(n + 5, 1e18); vector<vector<ll>> dp(2, vector<ll>(n + 5)); ll ans = 1e18; for (int i = 0; i < m; i++) { scanf("%d %d %d", &x, &y, &z); v[x].emplace_back(y, z); v[y].emplace_back(x, z); } auto dijk = [&] (int st, vector<ll> &dist) { priority_queue<pii, vector<pii>, greater<pii>> pq; pq.emplace(dist[st] = 0, st); while (!pq.empty()) { auto [nd, nn] = pq.top(); pq.pop(); for (auto &[tn, td]: v[nn]) { if (dist[tn] > dist[nn] + td) pq.emplace(dist[tn] = dist[nn] + td, tn); } } }; auto dfs = [&] (auto &&dfs, int cur, int par) -> void { dp[0][cur] = d[cur]; dp[1][cur] = d2[cur]; for (auto &[x, y]: v[cur]) { if (par == x || d3[cur] != d3[x] + y) continue; dfs(dfs, x, cur); dp[0][cur] = min(dp[0][cur], dp[0][x]); dp[1][cur] = min(dp[1][cur], dp[1][x]); } ans = min(ans, dp[0][cur] + d2[cur]); ans = min(ans, dp[1][cur] + d[cur]); }; dijk(uu, d); dijk(vv, d2); ans = min(ans, d[vv]); dijk(s, d3); dfs(dfs, t, 0); printf("%lld", ans); }

Compilation message (stderr)

commuter_pass.cpp: In function 'int main()':
commuter_pass.cpp:10:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   10 |     scanf("%d %d %d %d %d %d", &n, &m, &s, &t, &uu, &vv);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
commuter_pass.cpp:16:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   16 |         scanf("%d %d %d", &x, &y, &z);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...