Submission #595149

#TimeUsernameProblemLanguageResultExecution timeMemory
595149alexddCommuter Pass (JOI18_commuter_pass)C++17
0 / 100
447 ms20032 KiB
#include<iostream> #include<vector> #include<queue> #include<tuple> #include<algorithm> #include<climits> using namespace std; #define ll long long #define pb push_back #define pii pair<long long, long long> #define INF LLONG_MAX/2 ll n,m,s,t,u,v,ans; vector<pii> con[100001]; ll du[100001]; ll dv[100001]; void dijkstra(ll src, ll dist[]) { fill(dist,dist+100000,INF); dist[src]=0; priority_queue<pii, vector<pii>, greater<pii>> pq; pq.push({0,src}); ll cdist,nod,adj,w; while(!pq.empty()) { tie(cdist,nod)=pq.top(); pq.pop(); if(cdist!=dist[nod]) continue; for(auto aux:con[nod]) { tie(adj,w)=aux; if(dist[adj]>dist[nod]+w) { dist[adj]=dist[nod]+w; pq.push({dist[adj],adj}); } } } } ll dpu[100001]; ll dpv[100001]; ll dst[100001]; void dijkstra_parent(ll src, ll ult) { fill(dpu,dpu+100000,INF); fill(dpv,dpv+100000,INF); fill(dst,dst+100000,INF); priority_queue<pii,vector<pii>,greater<pii>> pq; pq.push({0,src}); dst[src]=0; ll cdist,nod,adj,w; while(!pq.empty()) { tie(cdist,nod)=pq.top(); pq.pop(); if(cdist!=dst[nod]) continue; for(auto aux:con[nod]) { tie(adj,w)=aux; if(dst[adj]>dst[nod]+w) { dst[adj]=dst[nod]+w; dpu[adj]=min(du[adj], dpu[nod]); dpv[adj]=min(dv[adj], dpv[nod]); pq.push({dst[adj],adj}); } else if(dst[adj]==dst[nod]+w && min(du[adj], dpu[nod])+min(dv[adj], dpv[nod])<dpu[adj]+dpv[adj]) { dpu[adj]=min(du[adj], dpu[nod]); dpv[adj]=min(dv[adj], dpv[nod]); } } } ans=min(ans,dpu[ult]+dpv[ult]); } int main() { ll a,b,c; cin>>n>>m>>s>>t>>u>>v; for(ll i=1;i<=m;i++) { cin>>a>>b>>c; con[a].pb({b,c}); con[b].pb({a,c}); } dijkstra(u,du); dijkstra(v,dv); ans=du[v]; dijkstra_parent(s,t); dijkstra_parent(t,s); cout<<ans<<"\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...