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 "crocodile.h"
#include <bits/stdc++.h>
using namespace std;
#define lli long long int
#define rep(i,a,b) for (int i = (a); i <= (b); i++)
#define repa(i,a,b) for (int i = (a); i >= (b); i--)
#define debug(a) cout << #a << " = " << a << endl
#define debugsl(a) cout << #a << " = " << a << ", "
#define MAX 100000
#define des first
#define peso second
lli n,m,a,b,res;
vector<pair<lli,lli> > hijos[MAX+2];
lli visitados[MAX+2];
set<pair<lli,lli> > cola;
set<pair<lli,lli> >::iterator it;
pair<lli,lli> act;
multiset<lli> llegadas[MAX+2];
multiset<lli>::iterator ot;
int travel_plan(int N, int M, int R[][2], int L[], int K, int P[])
{
    n = N;
    m = M;
    rep(i,0,m-1) {
        a = R[i][0];
        b = R[i][1];
        hijos[a].push_back({b,L[i]});
        hijos[b].push_back({a,L[i]});
    }
    rep(i,0,K-1) {
        a = P[i];
        cola.insert({0,a});
    }
    while (!cola.empty()) {
        it = cola.begin();
        act = (*it);
        cola.erase(it);
        if (visitados[act.second] == 1) continue;
        visitados[act.second] = 1;
        if (act.second == 0) {
            res = act.first;
            break;
        }
        for (auto h : hijos[act.second]) {
            if (visitados[h.des] == 1) continue;
            a = act.first + h.peso;
            llegadas[h.des].insert(a);
            if (llegadas[h.des].size() > 1)  {
                ot = llegadas[h.des].begin();
                ot++;
                a = (*ot);
                if (cola.find({a,h.des}) == cola.end()) cola.insert({a,h.des});
            }
        }
    }
    return res;
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |