#include "crocodile.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<ll,ll>
#define pll pii
#define fs first
#define sc second
const ll inf = 1e18;
const int mxn = 2e5+10;
bool vis[mxn];
vector<pii> paths[mxn];
ll dis[mxn][2];
int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]){
	for(int i = 0;i<=N;i++)dis[i][0] = dis[i][1] = inf;
	for(int i = 0;i<M;i++){
		int a = R[i][0],b = R[i][1],c = L[i];
		paths[a].push_back(pii(b,c));
		paths[b].push_back(pii(a,c));
	}
	priority_queue<pii,vector<pii>,greater<pii>> pq;
	for(int i = 0;i<K;i++){
		int now = P[i];
		dis[now][0] = dis[now][1] = 0;
		pq.push(pii(0,now));
	}
	while(!pq.empty()){
		auto [d,now] = pq.top();
		pq.pop();
		if(vis[now])continue;
		vis[now] = 1;
		for(auto [nxt,w]:paths[now]){
			if(vis[nxt])continue;
			if(dis[nxt][0]>d+w){
				swap(dis[nxt][0],dis[nxt][1]);
				dis[nxt][0] = d+w;
			}
			else if(dis[nxt][1]>d+w)dis[nxt][1] = d+w;
			if(dis[nxt][1] != inf)pq.push(pll(dis[nxt][1],nxt));
		}
	}
	return dis[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... |