Submission #1172190

#TimeUsernameProblemLanguageResultExecution timeMemory
1172190wstcubeCommuter Pass (JOI18_commuter_pass)C++20
16 / 100
168 ms19532 KiB
#include <bits/stdc++.h> //#pragma GCC optimize(O3,unroll-loops) //#pragma GCC target(avx2,bmi,bmi2,popcnt,lzcnt) #define ll long long #define fi first #define se second #define pb push_back const ll INF = 1e18; using namespace std; ll n,m; const int N = 1e5+5; bool mark[N]; void dijkstra(vector<ll>& d,ll s, vector<vector<pair<ll,ll> > >& adj){ d.assign(n,INF); d[s]=0; priority_queue<pair<ll,ll>,vector<pair<ll,ll> >, greater<pair<ll,ll> > > q; q.push({0,s}); while(!q.empty()){ ll v =q.top().se; ll d_v = q.top().fi; q.pop(); if(d[v]!=d_v) continue; for(auto edge : adj[v]){ ll to = edge.fi; ll len = edge.se; if(d[v] + len <d[to]){ d[to] = d[v]+len; q.push({d[to],to}); } } } } int main(){ std::ios_base::sync_with_stdio(0); cin.tie(0); ll u,s,t,v; cin >> n >> m; cin >> s >> t; cin >> u >> v; vector<vector<pair<ll,ll> > > adj(n+1); ll a,b,c; for(ll i=0;i<m;i++){ cin >> a >> b >> c; adj[a].pb({b,c}); adj[b].pb({a,c}); } vector<ll> du(n+1),dt(n+1),ds(n+1),dv(n+1),marked; dijkstra(ds,s,adj); dijkstra(dv,v,adj); dijkstra(dt,t,adj); dijkstra(du,u,adj); ll mincost = ds[t]; for(int i = 1;i<=n;i++) if(ds[i]+dt[i]==mincost) mark[i]=1; ll resU = INF, resV = INF; for(int i = 1;i<=n;i++) { if(mark[i]) { resU = min(resU,du[i]); resV = min(resV,dv[i]); } } cout << min(du[v],resU+resV); 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...