이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "crocodile.h"
#include <bits/stdc++.h>
#define ll long long 
#define ull unsigned ll
#define f first
#define s second
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pb push_back
#define epb emplace_back
using namespace std;
int travel_plan(int n, int m, int R[][2], int L[], int k, int p[])
{
  vector <vector <pii> > g(n);
  priority_queue <pii> pq;
  for(int i = 0; i < m; i++){
    int u = R[i][0];
    int v = R[i][1];
    int l = L[i];
    g[v].pb({u, l});
    g[u].pb({v, l});
  }
  int d[n + 1][2];
  for(int i = 0; i < n; i++)
    d[i][0] = d[i][1] = 1e9 + 1;
  for(int i = 0; i < k; i++){
    pq.push({0, p[i]});
    d[p[i]][0] = d[p[i]][1] = 0;
  }
  vector <bool> used(n + 1, false);
  while(!pq.empty()){
      int v = pq.top().s; pq.pop();
      if(used[v]) continue;
      used[v] = true;
      for(auto x : g[v]){
        int to = x.f;
        int len = x.s;
        if(d[v][1] + len < d[to][1]){
            d[to][1] = d[v][1] + len;
            if(d[to][0] > d[to][1]) swap(d[to][1], d[to][0]);
            if(d[to][1] != 1e9 + 1)pq.push({-d[to][1], to});
        }
      }
  }
  
  return d[0][1];
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |