#include "cyberland.h"
#include <bits/stdc++.h>
using namespace std;
const double 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<vector<pair<int, int>>> graph(N);
for (int i = 0; i < M; ++i) {
graph[x[i]].emplace_back(y[i], c[i]);
graph[y[i]].emplace_back(x[i], c[i]);
}
// Dijkstra with state: (cost, node, divide_count)
vector<vector<double>> dist(N, vector<double>(K + 1, INF));
set<tuple<double, int, int>> pq;
dist[0][0] = 0;
pq.emplace(0.0, 0, 0);
while (!pq.empty()) {
auto [cost, node, divs_used] = *pq.begin();
pq.erase(pq.begin());
// Apply zeroing ability at the current node
if (arr[node] == 0 && cost > 0 && dist[node][divs_used] > 0) {
dist[node][divs_used] = 0;
pq.emplace(0.0, node, divs_used);
//continue; // restart from zeroed state
}
// Apply divide-by-2 ability at the current node
if (arr[node] == 2 && divs_used < K) {
double divided_cost = cost / 2.0;
if (dist[node][divs_used + 1] > divided_cost) {
dist[node][divs_used + 1] = divided_cost;
pq.emplace(divided_cost, node, divs_used + 1);
}
}
// Traverse neighbors
for (auto [to, weight] : graph[node]) {
double new_cost = cost + weight;
if (dist[to][divs_used] > new_cost) {
dist[to][divs_used] = new_cost;
pq.emplace(new_cost, to, divs_used);
}
}
}
double result = *min_element(dist[H].begin(), dist[H].end());
return result == INF ? -1 : result;
}
# | 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... |