解题思路:
定义dp[i],代表该子树中最大的一条链(由叶子到根),注意到有可能叶子的权全是复数,所以我们把res初始化为负无穷。
核心代码:
void dfs(int u,int f)
{
dp[u]=w[u];
for(auto to:e[u])
{
if(to==f) continue;
dfs(to,u);
res=max(res,dp[u]+dp[to]);
解题思路:
定义dp[i],代表该子树中最大的一条链(由叶子到根),注意到有可能叶子的权全是复数,所以我们把res初始化为负无穷。
核心代码:
void dfs(int u,int f)
{
dp[u]=w[u];
for(auto to:e[u])
{
if(to==f) continue;
dfs(to,u);
res=max(res,dp[u]+dp[to]);