Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器 软件资源

软件开发小程序制作系统集成与运维空间租用硬件开发视频监控技术咨询与支持——联系电话:0311-88999002/88999003

首页 / 软件开发 / 数据结构与算法 / 算法:HDU 4679 Terrorist’s destroy(树形dp | 多校8)

算法:HDU 4679 Terrorist’s destroy(树形dp | 多校8)2014-01-01 csdn shuangde800题意

给一棵树,每条边有个权值,要删掉一条边,删掉以后会变成两颗子树,设两个子树的直径分别 为d1, d2,删掉的这条边权值为w

问删掉哪一条边,使得w*max(d1, d2)的值最小?

思路

典型的 树形dp, 但比赛时的代码写得非常搓,200+行,还好1A了

f(u, 0):以u点为顶点的子树的直径

f (u, 1):以u的父节点为顶点减去u的子树部分的子树的直径

先用树形dp求出上面的数组

然后 答案等于 min{ w(u,v)*max{f(v,0), f(v,1)} | v为u的子节点 }