传送门

dp[i][j][0] 表示点 i 在以 i 为根的子树中范围为 j 的解

dp[i][j][1] 表示点 i 在除去 以 i 为根的子树中范围为 j 的解

状态转移就很好写了

——代码

#include <cstdio>
#include <cstring>
#include <iostream>
#define N 100001 int n, k, cnt;
int f[N], dp[N][21][2], head[N], to[N << 1], next[N << 1], ans[N]; inline int read()
{
int x = 0, f = 1;
char ch = getchar();
for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -1;
for(; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + ch - '0';
return x * f;
} inline void add(int x, int y)
{
to[cnt] = y;
next[cnt] = head[x];
head[x] = cnt++;
} inline void dfs1(int u)
{
int i, v;
for(i = head[u]; i ^ -1; i = next[i])
{
v = to[i];
if(v ^ f[u])
{
f[v] = u;
dfs1(v);
dp[v][0][1] = dp[u][0][0];
}
}
} inline void dfs2(int u, int k)
{
int i, v;
dp[u][k][0] = dp[u][0][0];
for(i = head[u]; i ^ -1; i = next[i])
{
v = to[i];
if(v ^ f[u])
{
dfs2(v, k);
dp[u][k][0] += dp[v][k - 1][0]; }
}
for(i = head[u]; i ^ -1; i = next[i])
{
v = to[i];
if(v ^ f[u]) dp[v][k][1] = dp[u][k - 1][1] + dp[u][k][0] - dp[v][k - 1][0];
}
} int main()
{
int i, j, x, y;
n = read();
k = read();
memset(head, -1, sizeof(head));
for(i = 1; i < n; i++)
{
x = read();
y = read();
add(x, y);
add(y, x);
}
for(i = 1; i <= n; i++) dp[i][0][0] = read();
dfs1(1);
for(i = 1; i <= k; i++) dfs2(1, i);
for(i = 1; i <= n; i++) ans[i] = dp[i][k][0] + dp[i][k - 1][1];
for(i = 1; i <= n; i++) printf("%d\n", ans[i]);
return 0;
}

  

最新文章

  1. [转]理解android.intent.category.LAUNCHER 具体作用
  2. mysql大表如何优化
  3. 关于kafka连接不上别的机器问题Connection refused
  4. asp.net网站性能优化2则
  5. NUll在oracle与sqlserver中使用相同与区别
  6. java基础之反射机制
  7. twisted 使用
  8. cookie使用随笔
  9. 怎样做ie兼容性
  10. Perl一行式:字段处理和计算
  11. 对比synchronized与java.util.concurrent.locks.Lock 的异同
  12. JS----事件2
  13. SpringMVC(十) RequestMapping RequestHeader注解
  14. c/c++ 变量作用域
  15. 菜鸟学SSH(三)——Struts2国际化自动检测浏览器语言版
  16. tensorboard简单使用
  17. 面对最菜TI战队,OpenAI在Dota2上输的毫无还手之力
  18. windows server 2016部署服务
  19. 关于document.cookie的使用
  20. Spring Boot 笔记汇总

热门文章

  1. bzoj 4326: NOIP2015 运输计划【树链剖分+二分+树上差分】
  2. 10.23NOIP模拟题
  3. JavaScript编程艺术-第7章代码汇总(2)
  4. 转 awr自动收集脚本
  5. python获取主机名和用户名
  6. bnu 51640 Training Plan DP
  7. 本地编译全志R系列的步骤7(Ubuntu 17.04非长期支持版本)
  8. python自动化--语言基础四模块、文件读写、异常
  9. python学习笔记(6)——for...in &amp;while
  10. Codeforces_765_D. Artsem and Saunders_(数学)