#TT20251001. 遍历二叉树

遍历二叉树

背景

你是一只专门吸收二叉树能量的虫子,二叉树的能量都存储在边上,不同的边含有的能量不同。除了你可以正常的跟着边移动,你还有一个特殊能力,即当你位于二叉树的某一节点时,你可以传送到任意一个二叉树节点,你还有一个原则,就是绝不去已经去过的地方。现在你要到达这棵二叉树的某一叶子节点上,途中还要吸收尽可能多的能量。

题目描述

在一棵含有 nn 个节点,以 11 为根的二叉树上,你可以从任意位置开始出发,目的是到达一叶子节点 xx 。二叉树的每条边都含有一个能量值 wiw_i ,当你经过一条边时你就可以获得当前边的能量。你可以沿着边移动,或者是发动任意次特殊能力。

当你位于节点上时才可以发动特殊能力,传送到另一节点上。(这样两个节点都算被你经过过了)

你的原则是绝不去已经去过的地方。

现在需要你回答,在到达目的地之前,途中能获得的最大能量之和为多少。

格式

输入

第一行两个整数 n,xn,x,表示二叉树的节点个数和目的地编号。 (1n1051\leq n\leq 10^5,保证 xx 为叶子节点)

接下来 n1n-1 行,第 ii 行输入三个整数 x,y,wix,y,w_i ,表示 xxyy 节点之间的边含有 wiw_i 的能量。(1x,yn1\leq x,y\leq n0wi1090\leq w_i\leq 10^9

输出

一行一个整数,表示最大能量。

样例

7 6
1 2 5
1 3 10
2 4 10
2 5 10
3 6 10
3 7 5
40

样例解释

44 出发,移动 4>2>54->2->5,传送到 11,移动1>3>61->3->6,一共获得4040点能量。