// #include "closing.h"
#include<bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define pb push_back
#define ll long long
#include <vector>
const int MN=3e5;
vector<pair<int,ll>>v[MN];
ll distx[MN],disty[MN];
void dfsx(int a, int p){
for(auto t:v[a]){
if(p==t.ff)continue;
distx[t.ff]=distx[a]+t.ss;
dfsx(t.ff,a);
}
}
void dfsy(int a, int p){
for(auto t:v[a]){
if(p==t.ff)continue;
disty[t.ff]=disty[a]+t.ss;
dfsy(t.ff,a);
}
}
int max_score(int N, int X, int Y, long long K,
std::vector<int> U, std::vector<int> V, std::vector<int> W)
{
ll k=K;
for(int i=0;i<N-1;i++){
int a=U[i];
int b=V[i];
ll c=W[i];
v[a].pb({b,c});
v[b].pb({a,c});
}
dfsx(X,-1);
dfsy(Y,-1);
return 0;
vector<ll>vx,vy;
for(int i=0;i<N;i++){
vx.pb(distx[i]);
vy.pb(disty[i]);
}
sort(vx.begin(),vx.end());
sort(vy.begin(),vy.end());
for(int i=1;i<N;i++){
vy[i]+=vy[i-1];
}
ll s=0;
ll ans=0;
for(ll i=0;i<N;i++){
s+=vx[i];
if(s>k)break;
auto it=upper_bound(vy.begin(),vy.end(),k-s)-vy.begin();
it++;
ans=max(ans,i+it+1);
}
return ans;
}
signed main(){
int N; int X; int Y; long long K;std::vector<int> U; std::vector<int> V; std::vector<int> W;
cin>>N>>X>>Y>>K;
for(int i=0;i<N-1;i++){
int u,vk,w;
cin>>u>>vk>>w;
U.pb(u);
V.pb(vk);
W.pb(w);
//cin>>U[i]>>V[i]>>W[i];
}
ll k=K;
for(int i=0;i<N-1;i++){
int a=U[i];
int b=V[i];
ll c=W[i];
v[a].pb({b,c});
v[b].pb({a,c});
}
dfsx(X,-1);
dfsy(Y,-1);
vector<ll>vx,vy;
for(int i=0;i<N;i++){
vx.pb(distx[i]);
vy.pb(disty[i]);
}
sort(vx.begin(),vx.end());
sort(vy.begin(),vy.end());
for(int i=1;i<N;i++){
vy[i]+=vy[i-1];
}
ll s=0;
ll ans=0;
for(ll i=0;i<N;i++){
s+=vx[i];
if(s>k)break;
auto it=upper_bound(vy.begin(),vy.end(),k-s)-vy.begin();
it++;
ans=max(ans,i+it);
}
cout<<ans;
}
Compilation message
/usr/bin/ld: /tmp/ccLzmI33.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccBbDvE3.o:closing.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status