#include "cyberland.h"
#include <bits/stdc++.h>
using namespace std;
const long long inf=1e18;
double solve(int N, int M, int K, int H, vector<int> x, vector<int> y, vector<int> c, vector<int> arr) {
vector <pair<int,long long> > v[N];
for (int i=0; i<M; i++){
v[x[i]].push_back({y[i],c[i]});
v[y[i]].push_back({x[i],c[i]});
}
arr[0]=0; set <pair<long long,int>> s;
long long d[N];
for (int i=0; i<N; i++){
assert(arr[i]!=2);
if (arr[i]==0){
d[i]=0; s.insert({0,i});
}
else d[i]=inf;
}
while (!s.empty()){
int x=s.begin()->second; s.erase(s.begin());
for (auto i:v[x]){
if (d[i.first]>d[x]+i.second){
s.erase({d[i.first],i.first});
d[i.first]=d[x]+i.second;
s.insert({d[i.first],i.first});
}
}
}
//for (int i=0; i<N; i++) cout<<i<<" -> "<<d[i]<<"\n";
if (d[H]==inf) return -1;
return d[H];
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |