이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "crocodile.h"
#include<bits/stdc++.h>
using namespace std;
#define f(i,a,b) for(int i = a;i < b;i++)
#define ll int
#define pb push_back
#define F first
#define S second
#define ii pair<ll,ll>
vector<vector<ii> >adj;
bool v[100005] = {0};
ll val[100005] = {0};
vector<ll>ex[100005];
int travel_plan(int n, int m, int r[][2], int l[], int k, int p[]){
	adj.assign(n+5,vector<ii>());
	priority_queue<ii>ek;
	f(i,0,n){
		ex[i].pb(1e9);
		ex[i].pb(1e9);
		val[i] = 1e9;
		ek.push(ii(-val[i],i));
	}
	f(i,0,m){
		adj[r[i][0]].pb(ii(r[i][1],l[i]));
		adj[r[i][1]].pb(ii(r[i][0],l[i]));
	}
	f(i,0,k){
		ll z = p[i];
		v[z] = 1;
		val[z] = 0;
		for(auto x:adj[z]){
			if(!v[x.F]){
				ex[x.F].pb(val[z] + x.S);
				sort(ex[x.F].begin(),ex[x.F].end());
				ex[x.F].pop_back();
				val[x.F] = ex[x.F][1];
				ek.push(ii(-val[x.F],x.F));
			}	
		}
	}
	while(!ek.empty()){
		ii f = ek.top();
		ek.pop();
		if(v[f.S] || -f.F > val[f.S]){
			continue;
		}
		ll z = f.S;
		v[z] = 1;
		for(auto x:adj[z]){
			if(!v[x.F]){
				ex[x.F].pb(val[z] + x.S);
				sort(ex[x.F].begin(),ex[x.F].end());
				ex[x.F].pop_back();
				val[x.F] = ex[x.F][1];
				ek.push(ii(-val[x.F],x.F));
			}	
		}
	}
	return val[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... |