이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#include "crocodile.h"
using namespace std;
int travel_plan(int N, int M, int R[][2], int L[], int K, int P[])
{
vector<pair<int, int>> g[N];
for(int i = 0;i < M;i++){
g[R[i][0]].emplace_back(R[i][1], L[i]);
g[R[i][1]].emplace_back(R[i][0], L[i]);
}
long long dp[N], gar[N];
for(int i = 0;i < N;i++) dp[i] = gar[i] = LONG_LONG_MAX;
set<pair<long long, int>> s;
for(int i = 0;i < K;i++) {
dp[P[i]] = 0;
s.insert({0, P[i]});
}
while(!s.empty()){
int i = s.begin()->second;
s.erase(s.begin());
for(auto [to, c] : g[i]){
if(dp[to] <= dp[i]+c) continue;
if(gar[to] == LONG_LONG_MAX){
gar[to] = dp[i]+c;
continue;
}
if(gar[to] > dp[i]+c){
if(dp[to] > gar[to]){
s.erase({dp[to], to});
dp[to] = gar[to];
s.insert({dp[to], to});
}
gar[to] = dp[i]+c;
continue;
}
s.erase({dp[to], to});
dp[to] = dp[i]+c;
s.insert({dp[to], to});
}
}
return dp[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... |