STA-Station
题目来源
POI 2008
题目大意
给定一个 n \ n n 个节点的树,请求出一个结点,使得以这个结点为根时,所有结点的深度之和最大。
一个结点的深度为该节点到根的简单路径上边的数量。
n ≤ 1 0 6 n\leq 10^6 n≤106
解题方法
不难想到暴力方法:每次选取 n \ n n 个点中的一个点作为树的根,然后再遍历其它 n − 1 \ n-1 n−1 个点得到所有点的深度,这样的时间复杂度为 O ( n 2 ) \ O(n^2) O(n2),明显超时。
先来一个图分析一下:
如上图所示,先假设根为 1 \ 1 1 号点,得到总深度为 11 \ 11 11。接下来把根换成 2 \ 2 2 号点。
不妨列一下每个点变化前和变化后的差别:
变化前 | 变化后 |
---|---|
点 1 : 0 点 2 : 1 点 3 : 2 点 4 : 2 点 5 : 3 点 6 : 1 点 7 : 2 点1:0 \\ 点2:1 \\ 点3:2 \\ 点4:2 \\ 点5:3 \\ 点6:1 \\ 点7:2 点1:0点2:1点3:2点4: |