# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1173725 | Spade1 | Cyberland (APIO23_cyberland) | C++20 | 3100 ms | 283728 KiB |
#include "cyberland.h"
#include <bits/stdc++.h>
#define eb emplace_back
#define pii pair<int, int>
#define st first
#define nd second
using namespace std;
const int MX = 1e5 + 3;
const int MXK = 32;
vector<pii> adj[MX];
double dis[MX][MXK];
double solve(int N, int M, int K, int H, vector<int> x, vector<int> y, vector<int> c, vector<int> arr) {
for (int i = 0; i < N; ++i) adj[i].clear();
for (int i = 0; i < M; ++i) adj[x[i]].eb(y[i], c[i]), adj[y[i]].eb(x[i], c[i]);
for (int i = 0; i < N; ++i) for (int j = 0; j <= K; ++j) dis[i][j] = DBL_MAX / 2;
priority_queue<pair<double, pii>, vector<pair<double, pii>>, greater<pair<double, pii>>> pq;
pq.push({dis[H][0] = 0, {H, 0}});
while (!pq.empty()) {
auto d = pq.top().st;
auto [a, k] = pq.top().nd; pq.pop();
if (d > dis[a][k]) continue;
for (auto [b, w] : adj[a]) {
if (d + w < dis[b][k]) pq.push({dis[b][k] = d + w, {b, k}});
if (k < K && arr[b] == 2 && (d + w)/2 <= dis[b][k+1]) pq.push({dis[b][k+1] = (d + w)/2, {b, k}});
}
}
# | 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... |