#include "crocodile.h"
#include <bits/stdc++.h>
using namespace std;
int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]) {
    vector<vector<pair<int, int>>> adj(N);
    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]);
    }
    const int inf = 2e9 + 5;
    vector<vector<int>> dp(N, vector<int>(2, inf));
    priority_queue<tuple<int, int, int>> q;
    for (int i = 0; i < K; i++) {
        dp[P[i]][0] = dp[P[i]][1] = 0;
        q.emplace(0, 0, P[i]);
    }
    while (!q.empty()) {
        auto [s, f, u] = q.top();
        q.pop();
        f = -f;
        s = -s;
        if (s != dp[u][1] || f != dp[u][0]) continue;
        for (auto [v, w] : adj[u]) {
            int fi = dp[v][0], se = dp[v][1];
            if (s + w < fi) {
                se = fi;
                fi = s + w;
            }
            else if (s + w < se) {
                se = s + w;
            }
            if (fi != dp[v][0] || se != dp[v][1]) {
                dp[v][0] = fi;
                dp[v][1] = se;
                q.emplace(-se, -fi, v);
            }
        }
    }
    return dp[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... |