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>
#define Loop(x,l,r) for (ll x = (l); x < (r); ++x)
#define LoopR(x,l,r) for (ll x = (r)-1; x >= (l); --x)
typedef long long ll;
typedef std::pair<int, int> pii;
typedef std::pair<ll , ll > pll;
using namespace std;
static const int N = 100'010;
static const int inf = 1e9;
static vector<pii> A[N];
static int vc[N][2];
static int dis[N];
int travel_plan(int n, int m, int r[][2], int l[], int k, int p[])
{
	Loop (i,0,m) {
		A[r[i][0]].push_back({r[i][1], l[i]});
		A[r[i][1]].push_back({r[i][0], l[i]});
	}
	set<pii> s;
	fill (dis, dis+N, inf);
	Loop (i,0,N) vc[i][0] = vc[i][1] = inf;
	Loop (i,0,k) {
		dis[p[i]] = 0;
		s.insert({0, p[i]});
	}
	while (s.size()) {
		auto [d, v] = *s.begin();
		s.erase(s.begin());
		for (auto [u, w] : A[v]) {
			if (d + w < vc[u][1])
				vc[u][1] = d + w;
			if (vc[u][1] < vc[u][0])
				swap(vc[u][0], vc[u][1]);
			if (vc[u][1] < dis[u]) {
				s.erase({dis[u], u});
				dis[u] = vc[u][1];
				s.insert({dis[u], u});
			}
		}
	}
	return dis[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... |