#include <bits/stdc++.h>
#include "closing.h"
using namespace std;
#define fi first
#define se second
typedef long long ll;
typedef long double ld;
mt19937 rnd(chrono::high_resolution_clock::now().time_since_epoch().count());
ll inf = 1e18;
ll n, x, y, k;
vector<vector<pair<ll,ll>>> g;
vector<ll> dist;
int max_score(int N, int X, int Y, ll K, vector<int> U, vector<int> V, vector<int> W) {
n = N;
x = X;
y = Y;
k = K;
g.assign(N, {});
for (int i = 0; i < U.size(); i++) {
g[V[i]].push_back({U[i], W[i]});
g[U[i]].push_back({V[i], W[i]});
}
dist.assign(n, inf);
set<pair<ll, ll>> st;
dist[x] = 0;
dist[y] = 0;
st.insert({0,x});
st.insert({0,y});
while (!st.empty()) {
auto [d, ve] = *st.begin();
st.erase({d, ve});
for (auto [uv, le] : g[ve]) {
if (dist[uv] > d + le) {
st.erase({dist[uv], uv});
dist[uv] = d + le;
st.insert({dist[uv], uv});
}
}
}
sort(dist.begin(), dist.end());
int cnt = 0;
for (int i = 0; i < n; i++) {
if (dist[i] <= k) {
cnt++;
k -= dist[i];
}
}
return cnt;
}
# | 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... |