Submission #1218031

#TimeUsernameProblemLanguageResultExecution timeMemory
1218031teslerphamCommuter Pass (JOI18_commuter_pass)C++20
31 / 100
174 ms33988 KiB
#include <bits/stdc++.h> using namespace std; #define fi first #define se second #define pb push_back #define eb emplace_back #define all(x) begin(x), end(x) #define sz(x) ((int)(x).size()) #define el '\n' using ll = long long; using pii = pair<int,int>; using vi = vector<int>; using vll = vector<ll>; const ll INF = (ll)4e18; void fastIO() { ios::sync_with_stdio(false); cin.tie(nullptr); } int main(){ fastIO(); int N, M; cin >> N >> M; int S, T, U, V; cin >> S >> T >> U >> V; struct E{int u,v; ll w;}; vector<E> edges(M); vector<vector<pair<int,ll>>> adj(N+1); for(int i=0;i<M;i++){ cin >> edges[i].u >> edges[i].v >> edges[i].w; adj[edges[i].u].eb(edges[i].v, edges[i].w); adj[edges[i].v].eb(edges[i].u, edges[i].w); } auto dijkstra = [&](int src){ vll dist(N+1, INF); priority_queue<pair<ll,int>, vector<pair<ll,int>>, greater<>> pq; dist[src] = 0; pq.emplace(0, src); while(!pq.empty()){ auto [d,u] = pq.top(); pq.pop(); if(d > dist[u]) continue; for(auto &pr : adj[u]){ int v = pr.fi; ll w = pr.se; if(dist[v] > d + w){ dist[v] = d + w; pq.emplace(dist[v], v); } } } return dist; }; // 1) Dijkstra từ S, T vll distS = dijkstra(S); vll distT = dijkstra(T); ll bestST = distS[T]; // 2) Build graph with free edges weight=0 vector<vector<pair<int,ll>>> adj2(N+1); for(auto &e : edges){ bool free_edge = (distS[e.u] + e.w + distT[e.v] == bestST) || (distS[e.v] + e.w + distT[e.u] == bestST); ll w2 = free_edge ? 0 : e.w; adj2[e.u].eb(e.v, w2); adj2[e.v].eb(e.u, w2); } // 3) Dijkstra từ U trên adj2 vll distU(N+1, INF); priority_queue<pair<ll,int>, vector<pair<ll,int>>, greater<>> pq; distU[U] = 0; pq.emplace(0, U); while(!pq.empty()){ auto [d,u] = pq.top(); pq.pop(); if(d > distU[u]) continue; for(auto &pr : adj2[u]){ int v = pr.fi; ll w = pr.se; if(distU[v] > d + w){ distU[v] = d + w; pq.emplace(distU[v], v); } } } cout << distU[V] << el; return 0; } /* ⢀⡴⠑⡄⠀⠀⠀⠀⠀⠀⠀⣀⣀⣤⣤⣤⣀⡀ Monkey D. LUFFY ⠸⡇⠀⠿⡀⠀⣀⡴⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⡀ "I’m gonna be..." ⠀⠀⠀⠀⠑⢄⣾⣷⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣯⣍⠻⣷⡄ ...King of the Pirates! ⠀⠀⠀⠀⢀⡀⠁⠈⠙⠻⠿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠟⠋ ⠀ ⠀⠀⠀⢀⡾⣁⣀⠀⠴⠂⠙⣗⡀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⣴⣷⠘⠿⠛⠃⠀⠀⠀⠉⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⣴⣿⠙⣆⠀⠀⠀⠀⠀⠀⠀⠈⠙⠒⠊⠁⠀⠀⠀⠀⠀ ⢀⣼⣿⠀⣇⣀⠀⠀⣠⣤⣶⣾⣿⣶⣶⣶⣶⠆⠀⠀⠀⠀ */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...