码迷,mamicode.com
首页 > 其他好文 > 详细

zoj 3820

时间:2014-10-17 00:26:23      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:blog   http   ar   sp   log   html   bs   htm   tt   

 树的直径是指树的最长简单路。求法: 两遍BFS :先任选一个起点BFS找到最长路的终点,再从终点进行BFS,则第二次BFS找到的最长路即为树的直径;
              原理: 设起点为u,第一次BFS找到的终点v一定是树的直径的一个端点
              证明: 1) 如果u 是直径上的点,则v显然是直径的终点(因为如果v不是的话,则必定存在另一个点w使得u到w的距离更长,则于BFS找到了v矛盾)
                      2) 如果u不是直径上的点,则u到v必然于树的直径相交(反证),那么交点到v 必然就是直径的后半段了
                       所以v一定是直径的一个端点,所以从v进行BFS得到的一定是直径长度

转自 http://www.cppblog.com/jie414341055/archive/2010/07/08/119662.html

zoj 3820

标签:blog   http   ar   sp   log   html   bs   htm   tt   

原文地址:http://www.cnblogs.com/assult/p/4029674.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!