【树形DP】BZOJ 1131 Sta

题目内容

给出一个(N)个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大

输入格式

给出一个数字(N),代表有(N)个点。(N le 1000000)。下面(N-1)条边。

输出格式

输出你所找到的点,如果具有多个解,请输出编号最小的那个。

样例输入

8
1 4
5 6
4 5
6 7
6 8
2 4
3 4

样例输出

7

思路

看到(N le 1000000),只能是用(O(N))的效率了。
假设当前得到的答案在结点u,要把答案转移到子结点v。
这样就会有(n-size[v])的节点深度+1,(size[v])的节点深度-1。
变化就是(n-2size[v])的深度和。
从上向下dp。

原文地址:https://www.cnblogs.com/Midoria7/p/12686752.html