#include "crocodile.h"
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int mxN = 1e5+5;
int vis[mxN], ext[mxN];
vector <pair <int, ll>> adj[mxN];
ll dfs(int u) {
if (ext[u]) return 0;
if (vis[u]) return LLONG_MAX;
vis[u] = 1;
vector <ll> a;
for (auto [v, w] : adj[u]) {
ll k = dfs(v);
if (k < LLONG_MAX) a.emplace_back(k + w);
}
while (a.size() < 2) a.emplace_back(LLONG_MAX);
sort(a.begin(), a.end());
return a[1];
}
int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]) {
for (int i = 0; i < M; i++) {
adj[R[i][0]].emplace_back(R[i][1], L[i]);
adj[R[i][1]].emplace_back(R[i][0], L[i]);
}
for (int i = 0; i < K; i++) ext[P[i]] = 1;
return dfs(0);
}