C 题 显然满足条件的两个结点是有公共祖先的,因此我们只要用dp[x] 表示以 x 为根的子节点(包括自己)的权值和最大值,然后再从根节点 1 开始遍历,找到有至少俩个孩子的结点,寻找前 2 大的dp值,然后一直维护最大即可。 说的有点啰嗦,看代码吧。 AC code #include <bits stdc++.h> #define read(x) scanf("%d", &amp;x) #define readl(x) scanf("%lld", &amp;x) #define read2(x, y) scanf(&quo...