#include<bits/stdc++.h>
#include "crocodile.h"
using namespace std;
int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]){
   vector<vector<pair<int , long long>>> g(N);
   for(int i = 0;i < M;i ++){
      g[R[i][0]].emplace_back(R[i][1] , L[i]);
      g[R[i][1]].emplace_back(R[i][0] , L[i]);
   }
   vector<vector<long long>> dist(N , vector<long long>(2 , -1));
   priority_queue<pair<long long , int> , vector<pair<long long , int>> , greater<pair<long long , int>>> pq;
   for(int i = 0;i < K;i ++){
      for(int w = 0;w < 2;w ++){
         dist[P[i]][w] = 0;
      }
      pq.push(pair<long long , int>{0LL , P[i]});
   }
   while((int)pq.size()){
      auto [d , u] = pq.top();
      pq.pop();
      if(dist[u][1] != d){
         continue;
      }
      for(auto [v , w] : g[u]){
         d += w;
         if(dist[v][0] == -1){
            dist[v][0] = d;
         }else if(dist[v][1] == -1){
            dist[v][1] = d;
            if(dist[v][1] < dist[v][0]){
               swap(dist[v][1] , dist[v][0]);
            }
            pq.push(pair<int , long long>{dist[v][1] , v});
         }else{
            if(d < dist[v][0]){
               swap(dist[v][0] , dist[v][1]);
               dist[v][0] = d;
               pq.push(pair<int , long long>{dist[v][1] , v});
            }else if(d < dist[v][1]){
               dist[v][1] = d;
               pq.push(pair<int , long long>{d , v});
            }
         }
         d -= w;
      }
   }
   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... |