#include "crocodile.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pil = pair<int, ll>;
using pli = pair<ll, int>;
const static inline ll inf = 0x3f3f3f3f3f3f3f3f;
static priority_queue<pli, vector<pli>, greater<pli>> pq;
static vector<pil> adj[100000];
static ll dist[100000];
static __int8_t flag[100000];
int travel_plan(int n, int m, int r[][2], int l[], int k, int p[]) {
memset(dist, 0x3f, sizeof dist);
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++) flag[p[i]] = 1, pq.emplace(dist[p[i]] = 0, p[i]);
while (!pq.empty()) {
auto [d, u] = pq.top(); pq.pop();
if (flag[u] == 0) { flag[u] = 1; continue; }
if (flag[u] == 2) continue;
flag[u] = 2; dist[u] = d;
for (auto& [v, w]: adj[u]) if (flag[v] != 2) pq.emplace(dist[u] + w, v);
}
// for (int i = 0; i < n; i++) cerr << (int) flag[i] << ' ' << dist[i] << '\n';
return dist[0];
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |