//#include "closing.h"
#include <bits/stdc++.h>
using namespace std;
#define x first
#define y second
#define ii pair<int,int>
#define ll long long
int n,a,b;
ll k;
vector<vector<ii> >edge;
dfs(int x,int par,vector<ll>&dist)
{
for(ii need:edge[x])
{
int node=need.x;
ll value=need.y;
if(node==par)continue;
dist[node]=dist[x]+value;
dfs(node,x,dist);
}
}
int Sub1(vector<ll>distX,vector<ll>distY)
{
vector<ll>que;
for(int i=0; i<=n-1; i++)
{
que.push_back(distX[i]);
que.push_back(distY[i]);
}
sort(que.begin(),que.end());
ll res=k;
int ans=0;
for(int value:que)
{
if(res<value)break;
res-=value;
ans++;
}
return ans;
}
int max_score(int N,int X,int Y,long long K,vector<int>U,vector<int>V,vector<int>W)
{
n=N;
a=X;
b=Y;
k=K;
edge.resize(n);
for(int i=1; i<=N-1; i++)
{
int x=U[i-1];
int y=V[i-1];
int value=W[i-1];
edge[x].push_back({y,value});
edge[y].push_back({x,value});
}
vector<ll>distX(n);
vector<ll>distY(n);
dfs(a,0,distX);
dfs(b,0,distY);
if(distX[b]>2*k)return Sub1(distX,distY);
}
/*signed main()
{
int n,x,y,k;
vector<int>U;
vector<int>V;
vector<int>W;
cin>>n>>x>>y>>k;
for(int i=1; i<=n-1; i++)
{
int x;
cin>>x;
U.push_back(x);
}
for(int i=1; i<=n-1; i++)
{
int y;
cin>>y;
V.push_back(y);
}
for(int i=1; i<=n-1; i++)
{
int value;
cin>>value;
W.push_back(value);
}
cout<<max_score(n,x,y,k,U,V,W);
}*/
Compilation message
closing.cpp:11:1: error: ISO C++ forbids declaration of 'dfs' with no type [-fpermissive]
11 | dfs(int x,int par,vector<ll>&dist)
| ^~~
closing.cpp: In function 'int dfs(int, int, std::vector<long long int>&)':
closing.cpp:21:1: warning: no return statement in function returning non-void [-Wreturn-type]
21 | }
| ^
closing.cpp: In function 'int max_score(int, int, int, long long int, std::vector<int>, std::vector<int>, std::vector<int>)':
closing.cpp:56:22: warning: control reaches end of non-void function [-Wreturn-type]
56 | vector<ll>distX(n);
| ^