HDU2196 Computer(树形dp或树的直径)
来源:互联网 发布:unity3d透明材质 编辑:程序博客网 时间:2024/05/20 21:47
题意
给定一个n个点的树,两点之间的距离定义为他们两点之间最短路经过的边数,问对于每个i,其它点距离i最远是多少(n小于等于100000)
题解
首先将这棵树转换为有根树
方法一:(利用树的直径)
求出这棵树的任意一条直径(u,v),然后dfs出u及v到其他任意一个点i的距离,那么对于每一个点,最长的距离是
假设此时k到v的距离大于k到u的距离,那么现在与t最远的点一定是v没有比v还远(注意是还远,因为有可能有两条直径)如果说此时那条只有一个端点的边权比(k,v)的边权还大,那么此时直径就不是(u,v),而是(u,一个没有画出的点)
方法二:
设fi表示以i为根的子树中,与i最远的距离。
gi表示以i为根的子树外,与i最远的距离
并假设i的父亲为k
fi的转移就比较显然
gi的转移需要分类讨论一下
fk的最长路经过i,意思就是说k的子树中到k最远的这个点的路径上有i
看下图:
那么此时gi的转移方程为
若此时fk的最长路不经过i那么
我们可以从fk,gk中选个大的即可。
阅读全文
0 0
- HDU2196 Computer(树形dp或树的直径)
- hdu2196-树形dp|树的直径-Computer
- hdu2196(求树的直径或树形dp)
- hdu2196 树的直径或者树形dp
- 【树的直径】HDU2196-Computer
- hdu2196 Computer(树形dp)
- [HDU2196]Computer(树形dp)
- hdu2196 Computer (树形dp)
- hdu2196:Computer (树形DP)
- [hdu2196]Computer(树形dp)
- HDU2196-Computer(树形dp)
- Hdu 2196 Computer (树的直径 或 树形DP)
- 【树形DP】 hdu2196 Computer
- HDU2196:Computer(树形DP)
- HDU2196 - Computer (树形DP)
- HDU2196 Computer(树形DP)
- hdu2196 Computer 【树形dp】
- hdu2196 Computer【树形DP】
- oop思想实现数字时钟
- 【排序】选择排序
- 第三章 函数
- 使用threejs点云秀出酷炫的模型效果
- JVM之类加载机制
- HDU2196 Computer(树形dp或树的直径)
- 23种设计模式(3)-原型模式
- pat b 1035 插入与归并
- 字符编码测试总结
- leetcode--20. Valid Parentheses
- HDU 1231 最大连续子序列(HDU 1003 dp)
- ACdream 1020 The Game about KILL【约瑟夫环+打表规律】
- luogu p1145
- @Autowired 用法