#include <queue>
#include <vector>
#include<iostream>
#include "crocodile.h"
using namespace std;
int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]){
vector<long long>odl(N, -2);
vector<pair<int, int>>graf[N];
for(int i=0; i<M; i++){
// długość do_wierzchołka
graf[ R[i][0] ].push_back({L[i], R[i][1]});
graf[ R[i][1] ].push_back({L[i], R[i][0]});
}
priority_queue <pair<long long, int>>kol; // -odl komory, nr komory
for(int i=0; i<K; i++){
odl[P[i]] = -1;
kol.push({0, P[i]});
}
while(!kol.empty()){
auto [o, v] = kol.top();
kol.pop();
if(odl[v] != -1)
continue;
//cout<<v<<' ';
odl[v] = -o;
for(pair<int, int> i : graf[v]){
if(odl[i.second] == -2){
odl[i.second] = -1;
}else if(odl[i.second] == -1){
kol.push({o-i.first, i.second});
}
}
}
// cout<<'\n';
// for(int i=0; i<N; i++){
// for(auto j:graf[i])
// cout<<j.second<<' ';
// cout<<'\n';
// }
return odl[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... |