树上的点分治

简单说一下静态点分治,快过年时候一个下午讲过去,现在都忘得差不多了,赶紧捡起来(背个板子)

首先,点分治主要解决树的路径点权相关问题,其思想是分治(233)。

我们将树通过(子)重心进行“分块”,不断地进行统计,时间复杂度nlogn大概?

还是先来例题,不然说不明白= =

#POJ1741 树中点对统计

Description

  给定一棵N(1<=N<=100000)个结点的带权树,每条边都有一个权值(为正整数,小于等于1001)。定义dis(u,v)为u,v两点间的最短路径长度,路径的长度定义为路径上所有边的权和。再给定一个K(1<=K<=10^9),如果对于不同的两个结点u,v,如果满足dist(u,v)<=K,则称(u,v)为合法点对。求合法点对个数。

Input

  输入文件的第一行包含两个整数n和k,接下来n-1行每行都有三个整数u,v,l, 表示结点u和结点v之间有一条长l的边。

Output

  输出文件只有一行为合法点对的个数。

Sample Input

5 4

1 2 3

1 3 1

1 4 2

3 5 1

Sample Output

8

Hint

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值