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;
typedef long long ll;
typedef pair<ll,int> pli;
int travel_plan(int N,int M,int R[][2],int L[],int K,int P[]) {
  vector<vector<pli>> gr(N);
  for(int i=0;i<M;++i) {
    gr[R[i][0]].push_back({L[i],R[i][1]});
    gr[R[i][1]].push_back({L[i],R[i][0]});
  }
  vector<bool> vis(N);
  priority_queue<pli,vector<pli>,greater<pli>> pq;
  vector<vector<ll>> dist(N);
  for(int i=0;i<K;++i) {
    vis[P[i]]=1;
    dist[P[i]].push_back(0);
    for(pli p:gr[P[i]]) {
      ll ed=p.first;
      int v=p.second;
      pq.push({ed,v});
    }
  }
  while(!pq.empty()) {
    ll d=pq.top().first;
    int u=pq.top().second;
    dist[u].push_back(d);
    pq.pop();
    if(dist[u].size()<2||vis[u]) continue;
    vis[u]=1;
    for(pli p:gr[u]) {
      int v=p.second;
      ll ed=p.first;
      if(vis[v]) continue;
      pq.push({ed+dist[u][1],v});
    }
  }
  return dist[0][1];
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |