#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]);
}
vector<vector<int>> dp(N, vector<int>(2, INT_MAX));
priority_queue<pair<int, int>> q;
for (int i = 0; i < K; i++) {
dp[P[i]][0] = dp[P[i]][1] = 0;
q.emplace(0, P[i]);
}
while (!q.empty()) {
auto [d, u] = q.top();
q.pop();
d = -d;
if (d != dp[u][1]) continue;
for (auto [v, w] : adj[u]) {
int fi = dp[v][0], se = dp[v][1];
if (d + w < fi) {
se = fi;
fi = d + w;
}
else if (d + w < se) {
se = d + w;
}
if (fi != dp[v][0] || se != dp[v][1]) {
dp[v][0] = fi;
dp[v][1] = se;
q.emplace(-se, v);
}
}
}
return dp[0][1];
}
// int main() {
// int N, M, K;
// cin >> N >> M >> K;
// int R[M][2], L[M], P[K];
// for (int i = 0; i < M; i++) {
// cin >> R[i][0] >> R[i][1] >> L[i];
// }
// for (int i = 0; i < K; i++) cin >> P[i];
// cout << travel_plan(N, M, R, L, K, P);
// }
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |