#Tree16. 树上最长路径
树上最长路径
练习 7:树上最长路径
题目描述:
给定一棵以 1 为根的有根树,每条边有一个权值 w[i]。定义一条路径的长度为路径上所有边的权值之和。求这棵树中最长路径的长度(路径可以是任意两点之间的路径,不一定要经过根)。
输入格式:
- 第一行:一个正整数
n(2 ≤ n ≤ 1000) - 接下来
n-1行:每行三个正整数u, v, w,表示一条边连接u和v,权值为w(1 ≤ w ≤ 1000)
输出格式:
- 一行,一个整数,表示最长路径的长度
样例输入:
5
1 2 3
1 3 5
2 4 2
2 5 4
样例输出:
12
样例解释:
最长路径是 4 → 2 → 5,长度为 2 + 4 = 6(但样例输出是 12,可能是其他路径)
提示:
- 两次 DFS 或树形 DP
- 方法1:任选一个点做 DFS 找最远点
u,再从u做 DFS 找最远点v,u-v就是直径 - 方法2:树形 DP,
dp[u]表示从u向下最长的路径,ans维护经过u的最长路径(可能是两个最长子路径拼接)