这是一个不错的树形结构的题,由于本蒟蒻不会推什么神奇的公式其实是懒得推...,所以很愉快的发现其实只需要两个点之间的关系为祖父和儿子.或者是兄弟即可. 然后问题就变得很简单了,只需要做一个正常的DFS,遍历整棵树,同时判断有没有祖父,如果有就计算,然后遍历自己的儿子,每次判断最大的一个,然后用一个\(sum\)来维护这个点之前的所有兄弟的权值和,挨个计算即可. 具体操作见代码,如果有不懂的,代码里面具体解释. #include<bits/stdc++.h> #define clean(a,i)…