ural 1056 Computer Net

原本想找一个DP的方法, 可惜答案鱼龙混杂, 良莠不齐, 从BYVoid牛上拷下的代码都是CE.....

无奈, 还是DFS吧.

先找一个点, 然后找到任一个距离其最远的点, 再以这点为起点搜索距其最远的点, 这两个点之间的路径就是树网的直径__之一.

 

我咨询奇异夸克大牛时, 他想到的是贪心的方法.

先搜一遍, 然后分情况讨论.

1. 若此时有数个点距起点最远, 那么起点就是中心, 且唯一.

2. 否则, 向那个最远点所在的子树靠近, 距这棵子树上的点距离-1,同深度其他子树+1.

这个算法真的很好(它比两次DFS的理由清晰得多, 复杂度也低), 不过像我这样的菜, 实现它是有一定难度的......以后再说.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值