树的直径解法小结 #by Plato

来源:互联网 发布:r330打印机清零软件 编辑:程序博客网 时间:2024/04/30 03:17

树的直径树中的最长简单路径

 

方法:

1) 传统的:两遍BFS(DFS)

第一次从任意结点u出发,求出它的最远点s(这个点一定是直径的端点)

第二次从s出发,找到s的最远点ts-t即所求。

性质一:设起点为u,第一次BFS找到的终点v一定是树的直径的一个端点

证明:http://www.cnblogs.com/wuyiqi/archive/2012/04/08/2437424.html

2) DP:用tree-dp求出所有结点到其叶子结点的最长距离f[i]和次长距离g[i]MAX{ f[i] + g[i] }即所求。

性质二:树的直径的长度一定会是某个点的最长距离f[i]与次长距离g[i]之和

3) 图论里的多源最短路求法

4) topsort里的寻找关键路径的算法

 

题目:POJ 1985 HDU 2196

 

 

原创粉丝点击