poj2631专题

POJ2631 : Roads in the North

题目链接:嘤嘤嘤 题目大意:给你一个无向带权树,让你求最长路径(树的直径) 解题思路:任选一个点,用dfs跑一遍,记录与这个点最远的点s,再从s点dfs一遍,即可求得直径。 数据给的 n <= 1e4,然而枚举每一个点都用dfs跑一遍居然也能过...这题数据有点水。 证明如下: 这里给出树的直径的证明:  主要是利用了反证法:  假设 s-t这条路径为树的直径,或者称为树上的最长路  现

[树上DP] POJ2631 树的最长路径(最远点对)

题目 对于一棵n个结点的无根树,找到一条最长路径。换句话说,要找到两个点,使得它们的距离最远。 POJ2631 思路 和树的重心问题一样,先把无根树转成有根树。对于任意结点i,经过i的最长路就连接i的两棵不同子树u和v的最深叶子的路径。 基本的求法是,先随便找一个点作为根结点转换为无根树后,遍历每一个点,找出当i为根结点时的子树到叶子的最大距离d(j),在根据d(j)求出结点i作为根