Submission #1228198

#TimeUsernameProblemLanguageResultExecution timeMemory
1228198goduadzesabaCyberland (APIO23_cyberland)C++20
15 / 100
1504 ms2162688 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...