This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "closing.h"
#include "bits/stdc++.h"
using namespace std;
using i32 = int;
#define int long long
#define len(x) (int)(x.size())
#define all(x) x.begin(), x.end()
template<typename T>
using vec = vector<T>;
i32 max_score(i32 N, i32 X, i32 Y, int K, std::vector<i32> U, std::vector<i32> V, std::vector<i32> W) {
i32 ans = 0;
priority_queue<tuple<int, int, int>, vec<tuple<int, int, int>>, greater<>> pq;
vec<vec<pair<int, int>>> g(N);
for (int i = 0; i < len(U); i++) {
g[U[i]].emplace_back(V[i], W[i]);
g[V[i]].emplace_back(U[i], W[i]);
}
pq.emplace(0, X, 0);
pq.emplace(0, Y, 1);
vec<vec<bool>> used(2, vec<bool>(N, false));
vec<int> c(N, 0);
while (!pq.empty()) {
auto [cost, cur, t] = pq.top();
pq.pop();
if (used[t][cur]) continue;
if (K < cost) break;
used[t][cur] = true;
K -= cost;
c[cur] += cost;
ans++;
auto fix_queue = [&]() {
vec<tuple<int, int, int>> objects;
while (!pq.empty()) {
objects.push_back(pq.top());
pq.pop();
}
for (auto [a1, b1, c1]: objects) {
if (b1 == cur)
a1 -= cost;
pq.emplace(a1, b1, c1);
}
};
fix_queue();
for (auto [u, w]: g[cur]) {
if (used[t][u]) continue;
pq.emplace(cost + w - c[u], u, t);
}
}
return ans;
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |