This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std ;
int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]){
  const int inf = 2e9;
  vector<pair<int,int>> dis(N,{inf,inf});
  vector<vector<pair<int,int>>> g(N);
  for(int e = 0; e < M; ++e){
    int u = R[e][0], v = R[e][1], w = L[e];
    g[u].emplace_back(v,w);
    g[v].emplace_back(u,w);
  }
  priority_queue<pair<int,int>> pq;
  for(int i = 0; i < K; ++i){
    int u = P[i];
    dis[u] = {0,0};
    pq.push({-dis[u].second,u});
  }
  while(!pq.empty()){
    auto [d,i] = pq.top(); pq.pop();
    if(-d != dis[i].second)
      continue;
    for(auto [j,w] : g[i]){
      vector<int> prv = {dis[j].first,dis[j].second};
      prv.push_back(w + dis[i].second);
      auto now = prv;
      sort(now.begin(), now.end());
      dis[j].first = now[0];
      dis[j].second = now[1];
      if(prv[1] != now[1]){
        pq.push({-dis[j].second,j});
      }
    }
  }
  return dis[0].second;
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |