Submission #1130794

#TimeUsernameProblemLanguageResultExecution timeMemory
1130794julia_08Commuter Pass (JOI18_commuter_pass)C++20
100 / 100
692 ms75260 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const int MAXN = 4e5 + 10; const ll INF = 1e18; ll dist[MAXN][3]; int marc[MAXN][3]; int n, m; vector<pair<int, int>> adj[MAXN]; void dijkstra(int v, int x){ priority_queue<pair<ll, int>> q; for(int i=1; i<=4*n; i++) dist[i][x] = INF; dist[v][x] = 0; q.push({0, v}); while(!q.empty()){ auto [d, v] = q.top(); q.pop(); if(marc[v][x]) continue; marc[v][x] = 1; for(auto [u, w] : adj[v]){ if(dist[v][x] + w < dist[u][x]){ dist[u][x] = dist[v][x] + w; q.push({-dist[u][x], u}); } } } } int main(){ cin.tie(0)->sync_with_stdio(0); cin >> n >> m; int s, t; cin >> s >> t; int u, v; cin >> u >> v; vector<pair<int, pair<int, int>>> edges; for(int i=1; i<=m; i++){ int a, b, c; cin >> a >> b >> c; adj[a].push_back({b, c}); adj[b].push_back({a, c}); edges.push_back({a, {b, c}}); edges.push_back({b, {a, c}}); } dijkstra(s, 0); dijkstra(t, 1); for(auto e : edges){ int x = e.first, y = e.second.first, w = e.second.second; adj[x + 3 * n].push_back({y + 3 * n, w}); if(dist[x][0] + dist[x][1] == dist[t][0]){ adj[x + n].push_back({y + 3 * n, w}); adj[x + 2 * n].push_back({y + 3 * n, w}); } if(dist[y][0] + dist[y][1] == dist[t][0]){ adj[x].push_back({y + n, w}); adj[x].push_back({y + 2 * n, w}); } if(dist[x][0] + w + dist[y][1] == dist[t][0]) adj[x + n].push_back({y + n, 0}); if(dist[x][1] + w + dist[y][0] == dist[s][1]) adj[x + 2 * n].push_back({y + 2 * n, 0}); } if(dist[u][0] + dist[u][1] == dist[t][0]){ adj[u].push_back({u + n, 0}); adj[u].push_back({u + 2 * n, 0}); } dijkstra(u, 2); cout << min({dist[v][2], dist[v + n][2], dist[v + 2 * n][2], dist[v + 3 * n][2]}) << "\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...