题面

思路

本蒟蒻第一次学点分治,正遇模板题,留个模板代码

\(Code\)

#include<cstdio>
#include<algorithm>
using namespace std; const int N = 1e4 + 5;
int len , d[N] , cnt , n , use[N] , h[N] , tot , size , son[N] , siz[N] , rt , ans; struct edge{
int to , nxt , w;
}e[2 * N]; inline void add(int x , int y , int z)
{
e[++tot].to = y;
e[tot].w = z;
e[tot].nxt = h[x];
h[x] = tot;
} inline void getrt(int x , int fa)
{
son[x] = 0 , siz[x] = 1;
for(register int i = h[x]; i; i = e[i].nxt)
{
int v = e[i].to;
if (use[v] || v == fa) continue;
getrt(v , x);
siz[x] += siz[v];
son[x] = max(son[x] , siz[v]);
}
son[x] = max(son[x] , size - siz[x]);
rt = son[x] < son[rt] ? x : rt;
} inline void getdis(int x , int fa , int dis)
{
for(register int i = h[x]; i; i = e[i].nxt)
{
int v = e[i].to;
if (use[v] || v == fa) continue;
d[++cnt] = dis + e[i].w;
getdis(v , x , d[cnt]);
}
} inline int binary(int l , int r , int x)
{
int mid , res = 0;
while (l <= r)
{
mid = (l + r) >> 1;
if (d[mid] <= x) res = mid , l = mid + 1;
else r = mid - 1;
}
return res;
} inline int getans(int x , int dis)
{
d[cnt = 1] = dis;
getdis(x , 0 , dis);
sort(d + 1 , d + cnt + 1);
int l = 1 , r , res = 0;
while (len - d[l] >= d[l] && l < cnt)
{
r = binary(l + 1 , cnt , len - d[l]);
if (r > l) res += r - l;
l++;
}
return res;
} inline void divide(int x)
{
use[x] = 1 , ans += getans(x , 0);
for(register int i = h[x]; i; i = e[i].nxt)
{
int v = e[i].to;
if (use[v]) continue;
ans -= getans(v , e[i].w);
size = siz[v] , rt = 0;
getrt(v , x) , divide(rt);
}
} int main()
{
scanf("%d%d" , &n , &len);
int u , v , w;
for(register int i = 1; i < n; i++)
{
scanf("%d%d%d" , &u , &v , &w);
add(u , v , w) , add(v , u , w);
}
size = n;
son[0] = 2e9;
getrt(1 , 0) , divide(rt);
printf("%d" , ans);
}

最新文章

  1. CSS3 background-image背景图片相关介绍
  2. table td 文字超出显示省略号
  3. 20145227&amp;20145201 《信息安全系统设计基础》实验五
  4. Mac上配置Privoxy
  5. DefaultFilesMiddleware中间件如何显示默认页面
  6. datatable绑定comboBox显示数据[C#]
  7. ios7开发学习笔记-包括c oc 和ios介绍
  8. qq红心头像[中国心]制作教程之Photoshop教程
  9. 使用JDBC构建简单的数据访问层
  10. JMeter2.13 连接 sql server
  11. ecshop的smarty库还原成smarty原生库方法
  12. ASP中双引号单引号和&amp;连接符使用技巧
  13. 4、Web应用程序中的安全向量 -- over-posting(重复提交)
  14. ngixn配置
  15. Xcode出现may cause a leak非忽略的解决方法
  16. AS中jar包和aar包区别及导入导出
  17. Python 之 __new__() 方法与实例化
  18. 洛谷P1582 倒水题解
  19. 突然 不能f**q
  20. 服务注册发现consul之三:服务发现比较:Consul vs Zookeeper vs Etcd vs Eureka

热门文章

  1. linux server设置开机自动连接WIFI
  2. Dojo dijit/Tree的使用以及样式设置
  3. include指令和include动作的区别
  4. MassTransit 知多少 | 基于MassTransit Courier实现Saga 编排式分布式事务
  5. Prometheus及Grafana监控服务的安装使用
  6. Spring MVC复习 —— 搭建Spring MVC项目
  7. API 网关的功能用途及实现方式
  8. 【Azure Developer】在Github Action中使用Azure/functions-container-action@v1配置Function App并成功部署Function Image
  9. Apache RocketMQ 5.0 笔记
  10. 在Typescript项目中,使用ESLint和Prettier,以及解决保存代码后ESLint配置冲突问题