#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());
int inf = 1e9;
vector<vector<pair<int, int>>> g;
int max_score(int n, int x, int y, ll k, vector<int> u, vector<int> v, vector<int> w) {
g.resize(n);
for (int i = 0; i < n - 1; i++) {
g[u[i]].push_back({v[i], w[i]});
g[v[i]].push_back({u[i], w[i]});
}
vector<ll> dist(n, inf);
set<pair<ll, ll>> st;
dist[x] = 0;
dist[y] = 0;
int cnt = 0;
st.insert({0, x});
st.insert({0, y});
ll cur = k;
while (!st.empty()) {
auto pa = *st.begin();
st.erase(pa);
ll d = pa.fi, ve = pa.se;
if (cur >= d) {
cur -= d;
cnt++;
}
for (auto [uv, ti] : g[ve]) {
if (dist[uv] > dist[ve] + ti) {
dist[uv] = dist[ve] + ti;
if (dist[uv] <= cur) {
st.insert({dist[uv], uv});
}
}
}
}
return cnt;
}
/*
signed main() {
}*/
# | 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... |