제출 #1359273

#제출 시각아이디문제언어결과실행 시간메모리
1359273camal1331Commuter Pass (JOI18_commuter_pass)C++20
0 / 100
100 ms17852 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define NEGGERS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);

const ll N=1e5+31;
const ll INF=1e18;
vector<pair<ll,ll>> g[N];
ll dist1[N],dist2[N];

void dijkstra(ll src,ll dist[],ll n){
    for(ll i=1;i<=n;i++) dist[i]=INF;
    priority_queue<pair<ll,ll>,vector<pair<ll,ll>>,greater<pair<ll,ll>>> pq;
    pq.push({0,src});
    dist[src]=0;
    while(!pq.empty()){
        ll d=pq.top().first;
        ll v=pq.top().second;
        pq.pop();
        if(d!=dist[v]) continue;
        for(auto it:g[v]){
            ll to=it.first;
            ll w=it.second;
            if(dist[to]>d+w){
                dist[to]=d+w;
                pq.push({dist[to],to});
            }
        }
    }
}
void solve(){
    ll n,m;
    cin>>n>>m;
    ll s,t,u,v;
    cin>>s>>t;
    cin>>u>>v;
    for(ll i=0;i<m;i++){
        ll a,b,c;
        cin>>a>>b>>c;
        g[a].push_back({b,c});
        g[b].push_back({a,c});
    }
    dijkstra(s,dist1,n);
    dijkstra(t,dist2,n);
    ll ans=INF;
    ans=min(ans,dist1[u]+dist2[v]);
    ans=min(ans,dist1[v]+dist2[u]);
    cout<<ans;
}
signed main(){
    NEGGERS
    ll tt=1;
    //cin>>tt;
    while(tt--){
        solve();
    }   
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…