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>
#include <vector>
#define ll long long
#define ff first
#define ss second
using namespace std;
vector<pair<int,ll> > v[200001];
ll dis[2][200001];
pair<ll,int> dist[200001];
bitset<3001> vis;
void dfs(int x,int p,ll d,bool k){
dis[k][x]=min(dis[k][x],d);
for(pair<int,int> i:v[x]){
if(i.ff!=p)
dfs(i.ff,x,d+i.ss,k);
}
}
int max_score(int N, int X, int Y, long long K,
std::vector<int> U, std::vector<int> V, std::vector<int> W)
{
for(int i=0;i<N;i++){
v[i].clear();
dis[0][i]=2*K+1;
dis[1][i]=2*K+1;
}
for(int i=0;i<N-1;i++){
v[U[i]].push_back({V[i],W[i]});
v[V[i]].push_back({U[i],W[i]});
}
dfs(X,-1,0,0);
dfs(Y,-1,0,1);
for(int i=0;i<N;i++){
dist[i]={min(dis[0][i],dis[1][i]),i};
}
sort(dist,dist+N);
ll k=0;
int ans=0;
for(int i=0;i<N;i++){
if(k+dist[i].ff<=K){
k+=dist[i].ff;
ans++;
}
else break;
}
if(dis[0][Y]>2*K) return ans;
for(int i=0;i<N;i++){
for(int j=i;j<N;j++){
ll sum=0;
int tmp=0;
vis.reset();
for(int l=i;l<=j;l++){
sum+=max(dis[0][l],dis[1][l]);
vis[l]=1;
tmp+=2;
}
if(i>X)
for(int l=X;l<i;l++){
sum+=dis[0][l];
tmp++;
vis[l]=1;
}
if(j<Y)
for(int l=j+1;l<=Y;l++){
sum+=dis[1][l];
tmp++;
vis[l]=1;
}
if(sum>K) continue;
for(int l=0;l<N;l++){
if(vis[dist[l].ss]) continue;
if(sum+dist[l].ff<=K){
sum+=dist[l].ff;
tmp++;
}
else break;
}
ans=max(ans,tmp);
}
}
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... |