#include "closing.h"
#include <bits/stdc++.h>
using namespace std;
const int mxN = 2e5 + 100;
int max_score(int N, int X, int Y, long long K, vector<int> U, vector<int> V, vector<int> W)
{
vector<pair<int, int>> adj[N + 5];
for(int i = 0; i < (int) U.size(); ++i){
adj[U[i]].push_back({V[i], W[i]});
adj[V[i]].push_back({U[i], W[i]});
}
queue<pair<long long, int>> q;
vector<bool> vis(N + 5, 0);
vector<pair<long long, int>> dist;
int ans = 0;
q.push({0, X});
vis[X] = 1;
while(q.size()){
auto tp = q.front();
q.pop();
dist.push_back({tp.first, tp.second});
vis[tp.second] = 1;
for(auto it : adj[tp.second]){
if(!vis[it.first]){
q.push({(long long) it.second + tp.first, it.first});
vis[it.first] = 1;
}
}
}
while(q.size()) q.pop();
for(int i = 0; i <= N + 2; ++i) vis[i] = 0;
q.push({0, Y});
vis[Y] = 1;
while(q.size()){
auto tp = q.front();
q.pop();
dist.push_back({tp.first, tp.second});
vis[tp.second] = 1;
for(auto it : adj[tp.second]){
if(!vis[it.first]){
q.push({(long long) it.second + tp.first, it.first});
vis[it.first] = 1;
}
}
}
sort(dist.begin(), dist.end());
set<tuple<int, int, int>> st;
vector<int> xd[N + 5];
for(auto it : dist){
xd[it.second].push_back(it.first);
st.insert({it.first, 0, it.second});
}
vector<int> eww(N + 5, -1);
while(st.size()){
auto [cost, _, node] = *st.begin();
st.erase(st.find({cost, _, node}));
if(cost > K) break;
K -= cost, K += -_, ans += 1;
if(eww[node] == -1) {
for(auto it : xd[node]){
st.erase({it, 0, node});
}
if(xd[node][0] == cost) swap(xd[node][0], xd[node][1]);
st.insert({xd[node][0], -cost, node});
eww[node] = 0;
}
}
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... |