이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "crocodile.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
struct Vertex{
    int i, d;
    Vertex(){}
    Vertex(int _i, int _d): i(_i), d(_d) {}
    bool operator<(const Vertex &V) const{
        return d > V.d;
    }
};
vector<pair<int, int>> adj[100100];
vector<int> val[100100];
bool visited[100100];
int travel_plan(int N, int M, int R[][2], int L[], int K, int P[])
{
    for (int i=0;i<M;i++){
        adj[R[i][0]].emplace_back(R[i][1], L[i]);
        adj[R[i][1]].emplace_back(R[i][0], L[i]);
    }
    priority_queue<Vertex> pq;
    for (int i=0;i<K;i++){
        pq.emplace(P[i], 0);
    }
    while(!pq.empty()){
        auto s = pq.top(); pq.pop();
        //printf(" %d %d\n", s.i, s.d);
        if (!s.i) return s.d;
        if (visited[s.i]) continue;
        visited[s.i] = 1;
        for (auto &v:adj[s.i]) if (!visited[v.first]){
            val[v.first].push_back(v.second + s.d);
            sort(val[v.first].begin(), val[v.first].end());
            if (val[v.first].size()>2) val[v.first].pop_back();
            if (val[v.first].size()==2) pq.emplace(v.first, val[v.first][1]);
        }
    }
    exit(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... |