博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[BZOJ1468]Tree
阅读量:4841 次
发布时间:2019-06-11

本文共 2101 字,大约阅读时间需要 7 分钟。

Description

给你一棵TREE,以及这棵树上边的距离.问有多少对点它们两者间的距离小于等于K

Input

N(n<=40000) 接下来n-1行边描述管道,按照题目中写的输入 接下来是k

Output

一行,有多少对点之间的距离小于等于k

Sample Input

7
1 6 13
6 3 9
3 5 7
4 1 3
2 4 20
4 7 2
10

Sample Output

5


前置知识:

后置知识:还能有啥后置知识,处理过程中sort+two point扫描即可

/*program from Wolfycz*/#include
#include
#include
#include
#include
#define inf 0x7f7f7f7f#define sqr(x) ((x)*(x))using namespace std;typedef long long ll;typedef unsigned int ui;typedef unsigned long long ull;inline char gc(){ static char buf[1000000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,1000000,stdin),p1==p2)?EOF:*p1++;}inline int frd(){ int x=0,f=1;char ch=gc(); for (;ch<'0'||ch>'9';ch=gc()) if (ch=='-') f=-1; for (;ch>='0'&&ch<='9';ch=gc()) x=(x<<1)+(x<<3)+ch-'0'; return x*f;}inline int read(){ int x=0,f=1;char ch=getchar(); for (;ch<'0'||ch>'9';ch=getchar()) if (ch=='-') f=-1; for (;ch>='0'&&ch<='9';ch=getchar()) x=(x<<1)+(x<<3)+ch-'0'; return x*f;}inline void print(int x){ if (x<0) putchar('-'),x=-x; if (x>9) print(x/10); putchar(x%10+'0');}const int N=4e4;int pre[(N<<1)+10],now[N+10],child[(N<<1)+10],val[(N<<1)+10];int size[N+10],dis[N+10],h[N+10];bool vis[N+10];int tot,Max,root,K,top;ll Ans;void join(int x,int y,int z){pre[++tot]=now[x],now[x]=tot,child[tot]=y,val[tot]=z;}void insert(int x,int y,int z){join(x,y,z),join(y,x,z);}void Get_root(int x,int fa,int sz){ int res=0; size[x]=1; for (int p=now[x],son=child[p];p;p=pre[p],son=child[p]){ if (son==fa||vis[son]) continue; Get_root(son,x,sz); size[x]+=size[son]; res=max(res,size[son]); } res=max(res,sz-size[x]); if (res
K) r--; res+=r-l+1; } return res;}void divide(int x){ vis[x]=1,Ans+=solve(x,0); for (int p=now[x],son=child[p];p;p=pre[p],son=child[p]){ if (vis[son]) continue; Ans-=solve(son,val[p]); Max=inf,root=0; Get_root(son,0,size[son]); divide(root); }}int main(){ int n=read(); for (int i=1;i

转载于:https://www.cnblogs.com/Wolfycz/p/10213511.html

你可能感兴趣的文章
软考错题合集之14-11-AM
查看>>
大二暑假周记第三篇
查看>>
poj3286_How many 0's?
查看>>
Kubernetes Service 模板
查看>>
Quartus II& Nios II 出错解决办法
查看>>
[leetcode-110]balanced-binary-tree
查看>>
Oracle 日期查询
查看>>
python diango学习笔记一
查看>>
ActiveMQ
查看>>
linux下实现nginx安装实现端口区分,域名区分
查看>>
CentOS7.2环境下安装Nginx
查看>>
MFC动态创建控件及其消息响应函数
查看>>
团队作业_1_博客1(分工理解)
查看>>
mybatis 一对多和一对一写法注意事项
查看>>
三、使用vscode在docker中debug
查看>>
设计模式之 面向对象的养猪厂的故事,C#演示(一)
查看>>
分页及字母筛选
查看>>
Expressions are not allowed at the top level
查看>>
非程序员的GNU Emacs使用心得......Shell Mode 第13集 把我的 kill-ring 还给我
查看>>
15.C#回顾及匿名类型(八章8.1-8.5)
查看>>