#include <bits/stdc++.h>
#include "cyberland.h"
#include <vector>
using namespace std;
using ll = long long;
const ll INF = 1e18;
vector<vector<ll> > adjList;
map<pair<ll, ll>, ll> weightMat;
double dijkstras(ll startingNode, vector<int> &A) {
ll N = adjList.size();
priority_queue<pair<ll, double>, vector<pair<ll, double> >, greater<pair<ll, double> > > pq;
pq.push({startingNode, 0.0});
vector<double> distances(N, (double)INF);
while (!pq.empty()) {
auto [currentNode, currentDistance] = pq.top();
pq.pop();
if (currentDistance >= distances[currentNode]) {
continue;
}
for (auto v: adjList[currentNode]) {
if (currentDistance + weightMat[{currentNode, v}] < distances[v]) {
distances[v] = currentDistance + weightMat[{currentNode, v}];
pq.push({v, distances[v]});
}
}
}
double minimumPossible = INF;
for (ll i = 0; i < N; i++) {
if (A[i] == 0 || i == 0) minimumPossible = min(minimumPossible, distances[i]);
}
return minimumPossible;
}
double solve(int N, int M, int K, int H, vector<int> x, vector<int> y, vector<int> c, vector<int> arr) {
adjList.clear();
weightMat.clear();
adjList.resize(N);
// weightMat.resize(N, vector<ll>(N, INF));
for (ll i = 0; i < M; i++) {
adjList[x[i]].push_back(y[i]);
adjList[y[i]].push_back(x[i]);
weightMat[{x[i], y[i]}] = c[i];
weightMat[{y[i], x[i]}] = c[i];
}
double response = dijkstras(H, arr);
if (response >= INF) {
return -1.0;
} else {
return response;
}
}
# | 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... |