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... |