如果没有边数限制就是裸的淀粉质,如果有了加上一个树状数组记边数就行了。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<queue>
#include<set>
#include<map>
#include<iostream>
using namespace std;
#define re register
#define ll long long
inline int gi(){
int f=1,sum=0;char ch=getchar();
while(ch>'9' || ch<'0'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0' && ch<='9'){sum=(sum<<3)+(sum<<1)+ch-'0';ch=getchar();}
return f*sum;
}
const int N=400010;
int n,w,front[N],cnt,rt,siz[N],vis[N],tot,f[N];
struct node{int to,nxt,w;}e[N];
void Add(int u,int v,int w){e[++cnt]=(node){v,front[u],w};front[u]=cnt;}
void getroot(int u,int ff){
siz[u]=1;f[u]=0;
for(int i=front[u];i;i=e[i].nxt){
int v=e[i].to;if(vis[v] || v==ff)continue;
getroot(v,u);
siz[u]+=siz[v];
f[u]=max(f[u],siz[v]);
}
f[u]=max(f[u],tot-siz[u]);
if(f[u]<f[rt])rt=u;
}
ll ans;int dis[N],dep[N];
struct thing{
int dis,dep;
bool operator<(const thing &b)const{return dis<b.dis;}
}p[N];
void getdis(int u,int ff){
p[++cnt]=(thing){dis[u],dep[u]};
for(int i=front[u];i;i=e[i].nxt){
int v=e[i].to;if(v==ff || vis[v])continue;
dep[v]=dep[u]+1;dis[v]=dis[u]+e[i].w;
getdis(v,u);
}
}
int c[N],L;
int lowbit(int x){return x&(-x);}
void Add(int x,int d){while(x<=n+1){c[x]+=d;x+=lowbit(x);}}
int query(int x){if(x<=0)return 0;int ret=0;while(x){ret+=c[x];x-=lowbit(x);}return ret;}
ll calc(int u,int ds,int dp){
dis[u]=ds;dep[u]=dp;cnt=0;
getdis(u,u);
sort(p+1,p+cnt+1);
for(int i=1;i<=cnt;i++)Add(p[i].dep+1,1);
int l=1,r=cnt;ll ret=0;
while(l<r){
if(p[l].dis+p[r].dis<=w){
Add(p[l].dep+1,-1);
ret+=query(L-p[l].dep+1);
l++;
}
else{
Add(p[r].dep+1,-1);
r--;
}
}
Add(p[l].dep+1,-1);
return ret;
}
void solve(int u){
ans+=calc(u,0,0);
vis[u]=1;
for(int i=front[u];i;i=e[i].nxt){
int v=e[i].to;if(vis[v])continue;
ans-=calc(v,e[i].w,1);
rt=0;tot=siz[v];
getroot(v,v);
solve(rt);
}
}
int main(){
n=gi();L=gi();w=gi();
for(int i=2;i<=n;i++){int fa=gi(),v=gi();Add(fa,i,v);Add(i,fa,v);}
tot=f[0]=n;
getroot(1,0);
solve(rt);
printf("%lld\n",ans);
return 0;
}

CF293E Close Vertice的更多相关文章

  1. cf293E Close Vertices(树分治+BIT)

    E. Close Vertices You've got a weighted tree, consisting of n vertices. Each edge has a non-negative ...

  2. CF293E Close Vertices 点分治+树状数组

    开始zz写了一个主席树,后来发现写个树状数组就行~ #include <cstdio> #include <vector> #include <algorithm> ...

  3. 纸上谈兵: 图 (graph)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 图(graph)是一种比较松散的数据结构.它有一些节点(vertice),在某些节 ...

  4. ICEM(2)—机翼翼稍网格绘制

    有时我们需要观察翼尖涡,这就需要将机翼全部被网格包围.但是网上比较多的教程都是机翼边缘即为网格边缘,机翼位于网格内部的不多.若是直接将网格拉伸,则会产生结构和非结构网格交错的情况.下面是绘制步骤 1. ...

  5. CF 407B Long Path[观察性质 DP]

    B. Long Path time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  6. HDU 4358 Boring counting(莫队+DFS序+离散化)

    Boring counting Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 98304/98304 K (Java/Others) ...

  7. hdu 4358 Boring counting dfs序+莫队+离散化

    Boring counting Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 98304/98304 K (Java/Others) ...

  8. 纸上谈兵:图(graph)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 图(graph)是一种比较松散的数据结构.它有一些节点(vertice),在某些节 ...

  9. Shape comparison language

      形状比较语言, 九交模型 In this topic About shape comparison language Dimensionality Extensions to the CBM SC ...

随机推荐

  1. 在Windows上安装 Consul

    使用Chocolatey(Windows包管理工具)安装 官方安装说明 https://chocolatey.org/install 安装Consul 官方安装说明 https://chocolate ...

  2. Django Rest framework实现流程

    目录 一 什么是restful架构 二 Django REST framework简介 三 Django REST framework原理 四 Django REST framework源码流程 五 ...

  3. 【转载】Sqlserver使用Right函数从最右边向前截取固定长度字符串

    在SQL语句查询过程中,Sqlserver支持使用LEFT().RIGHT().SUBSTRING()等几个函数对字符串进行截取操作,其中Left函数表示从开始字符向后截取多少个字符,Right函数表 ...

  4. hibernate saveorupdate方法只有更新有效果,保存没有效果

    转自:https://blog.csdn.net/KAIXINLUOYE/article/details/72821014 单主键生成策略由native改成assigned后,问题解决.

  5. MySQL基础篇

    数据库基础知识 以MySQL为基础 数据库事务 :数据库中一组原子性的SQL操作,彼此状态一致.具有ACID特性. 事务 ACID 特性: 原子性:数据库事务是一个整体,其中的SQL操作要么全部提交成 ...

  6. 关于#error

    很简单的一个东西,但是感觉使用价值没有太大.实现了以下,结果如下: 执行到#error语句的时候直接停止编译,在下面输出设定好的错误信息. 来自为知笔记(Wiz)

  7. nginx 默认配置语法和日志的format

    nginx 默认配置 查看有nginx哪些默认配置文件,打开/etc/nginx/nginx.conf文件,查看尾行部分 会默认将/etc/nginx/conf.d/文件下其他以.conf结尾的配置文 ...

  8. Spring Boot全局异常处理

    本文为大家分享了Spring Boot全局异常处理,供大家参考,具体内容如下 1.后台处理异常 a.引入thymeleaf依赖 <!-- thymeleaf模板插件 --> <dep ...

  9. 【PAT-一道看着很难的水题】L2-023. 图着色问题

    水题!没其他想说的,还以为可以搞点高大上的搜索呢!十五分钟,暴力两重循环就OK了! 代码如下: #include<iostream> #include<stdio.h> #in ...

  10. 使用Topshelf创建Windows服务[转载]

    概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的 ...