Submission #1167683

#TimeUsernameProblemLanguageResultExecution timeMemory
1167683edga1Commuter Pass (JOI18_commuter_pass)C++20
31 / 100
173 ms15800 KiB
#include <bits/stdc++.h> #pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt") using namespace std; vector<pair<int,int>> e[100005]; void d(int s, vector<long long> &att){ att[s]=0; priority_queue<pair<long long,int>, vector<pair<long long,int>>, greater<pair<long long,int>>> pq; vector<int> seen(100005,0); pq.push({0,s}); while(!pq.empty()){ auto cur=pq.top(); int pos=cur.second; pq.pop(); if(!seen[pos]){ for(int i=0; i<e[pos].size(); i++){ if(att[pos]+e[pos][i].second<att[e[pos][i].first] || att[e[pos][i].first]==-1){ att[e[pos][i].first]=att[pos]+e[pos][i].second; pq.push({att[pos]+e[pos][i].second,e[pos][i].first}); } } seen[pos]=1; } } } int main() { ios_base::sync_with_stdio(false); cin.tie(0); int n,m,s,t,u,v; cin>>n>>m>>s>>t>>u>>v; for(int i=0; i<m; i++){ int a,b,c; cin>>a>>b>>c; e[a].push_back({b,c}); e[b].push_back({a,c}); } vector<long long> ds(100005,-1), dt(100005,-1), dv(100005,-1), du(100005,-1); d(s,ds); d(t,dt); d(v,dv); d(u,du); long long rv=-1,ru=-1; for(int i=1; i<=n; i++){ if(ds[t]==ds[i]+dt[i]){ if(rv==-1 || dv[i]<rv) rv=dv[i]; if(ru==-1 || du[i]<ru) ru=du[i]; } } cout<<min(ru+rv,du[v]); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...