#include "crocodile.h"
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
const int MAXN = 100000;
vector<pair<int, int>> g[MAXN];
int dist[MAXN], viz[MAXN];
priority_queue<pair<int, int>> pq;
int travel_plan(int n, int m, int r[][2], int l[], int k, int p[]) {
for(int i = 0; i < m; i++) {
g[r[i][0]].push_back({r[i][1], l[i]});
g[r[i][1]].push_back({r[i][0], l[i]});
}
for(int i = 0; i < k; i++) {
viz[p[i]] = 1;
pq.push({0, p[i]});
}
while(!pq.empty()) {
auto now = pq.top();
pq.pop();
if(viz[now.second] == 0) {
viz[now.second] = 1;
} else if(viz[now.second] == 1) {
viz[now.second] = 2;
dist[now.second] = -now.first;
for(auto edge : g[now.second]) {
pq.push({-(dist[now.second] + edge.second), edge.first});
}
}
}
return dist[0];
}