This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
// [node cnt, edge cnt, edges, vals, exit cnt, exits]
int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]) {
vector <pair <int, int>> adj[N];
for(int i = 0; i < M; i++) {
int u = R[i][0], v = R[i][1], w = L[i];
adj[u].emplace_back(v, w);
adj[v].emplace_back(u, w);
}
using T = pair <int, int>;
priority_queue <T, vector <T>, greater <T>> pq;
vector <int> cnt(N);
vector <int> special(N);
vector <int> ans(N, -1);
for(int i = 0; i < K; i++) {
int node = P[i];
special[node] = true;
pq.emplace(0, node);
}
while(!pq.empty()) {
auto [c, node] = pq.top();
pq.pop();
cnt[node]++;
if(special[node]) {
if(cnt[node] != 1) {
continue;
}
} else {
if(cnt[node] != 2) {
continue;
}
}
ans[node] = c;
for(auto [child, w] : adj[node]) {
pq.emplace(c + w, child);
}
}
return ans[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... |