cf526D

链接

题意

        给你一棵树,在树中找出一条路径(也可以只有一个点),让这条路径(点权和-边权和)最大。
        树的节点最多3e5,权值最大1e9

题解

        随便找个节点当根,dp1[i]代表以i为根的子树上,经过i点,走向子树的路径的最大权值,dp2[i]为次大。得到此数组之后,定义路径的深度节点为路径上的所有节点中,深度最小的那个节点,枚举每个节点作为深度节点的时候的最大权值路径,如果dp2<0则取dp1,否则取dp1+dp2转移