#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=;
int last[maxn],pre[maxn*],other[maxn*],w[maxn*],t,vis[maxn];
void add(int x,int y,int z){++t;pre[t]=last[x];last[x]=t;other[t]=y;w[t]=z;}
int cnt,root,d[maxn],siz[maxn],f[maxn],sizz,q[maxn];
int x,y,z,n,m,k,ans;
void getroot(int x,int fa){
siz[x]=;f[x]=;
for(int i=last[x];i;i=pre[i]){
int v=other[i];
if(v==fa||vis[v])continue;
getroot(v,x);
siz[x]+=siz[v];
f[x]=max(f[x],siz[v]);
}
f[x]=max(f[x],sizz-siz[x]);
if(f[x]<f[root])root=x;
}
void getdis(int x,int fa){
q[++cnt]=d[x];
for(int i=last[x];i;i=pre[i]){
int v=other[i];
if(v==fa||vis[v])continue;
d[v]=d[x]+w[i];
getdis(v,x);
}
}
int calc(int x,int init){
cnt=;d[x]=init;
getdis(x,);
sort(q+,q+cnt+);
int res=;
for(int l=,r=cnt;l<r;){
if(q[l]+q[r]<=k){res+=r-l;l++;}
else r--;
}
return res;
}
void solve(int x){
ans+=calc(x,);
vis[x]=;
for(int i=last[x];i;i=pre[i]){
int v=other[i];
if(vis[v])continue;
ans-=calc(v,w[i]);
f[]=sizz=siz[v];
root=;
getroot(v,);
solve(root);
}
}
int main(){
while(scanf("%d%d",&n,&k)!=EOF){
if(n==&&k==)break;
memset(last,,sizeof(last));
memset(vis,,sizeof(vis));
t=;
for(int i=;i<n;++i){
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);add(y,x,z);
}
f[]=sizz=n;ans=root=;
getroot(,);
solve(root);
printf("%d\n",ans);
}
return ;
}

poj1741(点分模板)的更多相关文章

  1. POJ1741 点分治模板

    传送门:http://poj.org/problem?id=1741 题意: 求树上两点间路径长度小于k的点对个数 题解: 参考资料 守望的淀粉质略解:https://www.luogu.org/bl ...

  2. bzoj 1468 Tree 点分

    Tree Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1972  Solved: 1101[Submit][Status][Discuss] Desc ...

  3. VS2010新建Web网站与新建Web应用程序的区别

    在Visual Studio 2010中,除了可以使用“创建Web应用程序”的方式来构建自己的Web项目之外,还可以通过创建“Web网站”的方式来构建Web项其中,Web网站的创建方法:打开Visua ...

  4. 20162323周楠《Java程序设计与数据结构》第六周总结

    学号 2016-2017-2 <程序设计与数据结构>第六周学习总结 教材学习内容总结 继承:从已有类派生一个新类,是面向对象程序设计的一个特点 在Java中只支持单继承,不支持多继承 继承 ...

  5. url的反向解析

    1. url的语法格式: url(regex, views, **kwargs, name) name:为地址起别名,反向解析时使用 2.反向解析 对于Django中的url反向解析,是分模板和视图的 ...

  6. 20155212 2016-2017-2 《Java程序设计》第6周学习总结

    20155212 2016-2017-2 <Java程序设计>第6周学习总结 教材学习内容总结 Chapter10 输入串流为java.io.InputStream,输出串流为java.i ...

  7. 20155201 2016-2017-2 《Java程序设计》第五周学习总结

    20155201 2016-2017-2 <Java程序设计>第五周学习总结 教材学习内容总结 第八章 异常处理 程序设计本身的错误,建议使用Exception或其子类实例来表现,称错误处 ...

  8. VS2010新建Web网站与新建Web应用程序的区别 (转)

    在Visual Studio 2010中,除了可以使用“创建Web应用程序”的方式来构建自己的Web项目之外,还可以通过创建“Web网站”的方式来构建Web项其中,Web网站的创建方法:打开Visua ...

  9. 20155234 2016-2017-2 《Java程序设计》第7周学习总结

    20155234 2016-2017-2 <Java程序设计>第7周学习总结 教材学习内容总结 第十二章 Lambda Lambda表达式会使程序更加地简洁,在平行设计的时候,能够进行并行 ...

随机推荐

  1. vue 获取组件 和 dom 对象 ref/el

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  2. python 面向对象编程 之 反射

    1 什么是反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被 ...

  3. Liunx 硬盘分区

    1)什么要进行硬盘分区:a) 更容易管理和控制系统,因为相关的文件和目录都放在一个分区中.b) 系统效率更高.c) 可以限制用户使用硬盘的份额(磁盘空间的大小).d) 更容易备份和恢复. 2)硬盘的逻 ...

  4. ES6 Symbol的应用场景

    一.简介 具体使用请参考:API ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值.它是 JavaScript 语言的第七种数据类型,前六种是:undefined.null.布尔值(B ...

  5. 解决Address is in use:Windows和Linux通过杀死进程

    在开发无卡支付系统的过程中,因为用了端口来监听服务,在调试程序的时候,忘了关,再次运行的时候会出现Address is in use的问题,即端口已经被绑定,无法再次使用,最直观的方法就是杀死之前的进 ...

  6. Windows下war包部署到Linux下Tomcat出现的问题

    最近,将Windows下开发的war包部署到Linux下的Tomcat时报了一个错误:tomcat error in opening zip file.按理说,如果正常,当把war包复制到webapp ...

  7. .net委托

    今天要学的是委托 委托的基本形式 直接上代码 public delegate int AddDelegate(int x,int y); class Program { static void Mai ...

  8. 跟我学Spring Boot(一)创建Spring Boot 项目

    本人开发环境为idea15.02 + jdk8 步骤1: 步骤2: 步骤3: 步骤4: 步骤5: 相关目录介绍: resources/static:这里主要存放一些资源文件 例如 css.js.ima ...

  9. IOS初级:app的图标

    1,首先准备6张png图,分辨率一定要正确,不然报错(The app icon set named "AppIcon" did not have any applicable co ...

  10. OneZero第三周第四次站立会议(2016.4.7)

    1. 时间: 18:35--18:50 共计15分钟. 2. 成员: X 夏一鸣 * 组长 (博客:http://www.cnblogs.com/xiaym896/), G 郭又铭 (博客:http: ...