$k$ 十分小,直接暴力维护 $1$~$k$ 的答案即可.

然后需要用父亲转移到儿子的方式转移一下.

Code:

#include <bits/stdc++.h>
#define M 23
#define N 100005
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
int n,K,edges;
int f[N][M],hd[N],to[N<<1],nex[N<<1],num[N],ans[N][M],sum[N][M];
void addedge(int u,int v)
{
nex[++edges]=hd[u],hd[u]=edges,to[edges]=v;
}
void dfs(int u,int ff)
{
f[u][0]=num[u];
for(int i=hd[u];i;i=nex[i])
{
int v=to[i];
if(v==ff) continue;
dfs(v,u);
for(int j=1;j<=K;++j) f[u][j]+=f[v][j-1];
}
}
void solve(int u,int ff)
{
ans[u][0]=num[u];
ans[u][1]=num[ff]+f[u][1];
for(int i=2;i<=K;++i)
ans[u][i]=ans[ff][i-1]-f[u][i-2]+f[u][i];
for(int i=hd[u];i;i=nex[i])
if(to[i]!=ff) solve(to[i], u);
}
int main()
{
int i,j;
// setIO("input");
scanf("%d%d",&n,&K);
for(i=1;i<n;++i)
{
int a,b;
scanf("%d%d",&a,&b),addedge(a,b),addedge(b,a);
}
for(i=1;i<=n;++i) scanf("%d",&num[i]);
dfs(1,0);
for(i=1;i<=n;++i)
for(j=1;j<=K;++j) f[i][j]+=f[i][j-1];
for(i=1;i<=K;++i) ans[1][i]=f[1][i];
for(int i=hd[1];i;i=nex[i]) solve(to[i], 1);
for(i=1;i<=n;++i) printf("%d\n",ans[i][K]);
return 0;
}

  

最新文章

  1. 浅谈:javascript的面向对象编程之基础知识的介绍
  2. struts2笔记
  3. 1Z0-053 争议题目解析699
  4. 【1】springmvc4 + servlet3 零配置全注解入门项目helloword
  5. python动态网页爬取——四六级成绩批量爬取
  6. Dobbo的继任者?试用微博RPC框架Motan
  7. org.dom4j.documentexception异常
  8. Java for LeetCode 030 Substring with Concatenation of All Words【HARD】
  9. 在MongoDB中实现聚合函数 (转)
  10. android 拍照,裁切,上传圆形头像, 图片等比缩放
  11. 批处理命令 - if
  12. ASP.NET Session丢失的解决方案
  13. Android开发百度地图(一)--显示基本地图
  14. C 语言中 typeof keyword简单介绍
  15. [android] 百度地图开发 (两).所在地的城市定位和城市POI搜索
  16. 如何彻底禁止win10易升更新(转)
  17. JS中常见设计模式总结
  18. 20165206 2017-2018-2《Java程序设计》课程总结
  19. 编辑datagridview单元格
  20. Kubernetes(k8s)入门、单机版安装、kuberctl指令、k8s服务实例

热门文章

  1. git 使用中报错:LF will be replaced by CRLF in app.json
  2. 装饰器中functools的用处
  3. T100——程序从标准签出客制后注意r.c和r.l
  4. Python 语言简介与入门
  5. 关于工作单元模式——工作单元模式与EF结合的使用
  6. 1.JavaWeb 知识点概览
  7. MySQL备份--xtrabackup与mysqldump工具使用
  8. Python3简易接口自动化测试框架设计与实现(中)
  9. Python 嵌套列表解析
  10. 程序员和IT员不能错过的网站