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...