N e a r b y C o w s − C E NearbyCows-CE NearbyCows−CE自动机
代码实现
我们并不需要知道树中的父子关系,只需要知道每个点的相邻节点。
这个可以通过输入直接得到
Q
W
Q
QWQ
QWQ
就不用
d
f
s
dfs
dfs辣!
记得初始化
#include<cstdio>
const int MAXN = 1e5 + 10;
int N, K;
int f[MAXN], t[MAXN], c[MAXN], dp[MAXN][25] = {0};
int main()
{
scanf("%d%d", &N, &K);
for (int i = 1; i < N; i++) scanf("%d%d", &f[i], &t[i]);
for (int i = 1; i <= N; i++) scanf("%d", &c[i]), dp[i][0] = dp[i][1] = c[i];
for (int i = 1; i < N; i++) dp[f[i]][1] += c[t[i]], dp[t[i]][1] += c[f[i]];
for (int k = 2; k <= K; k++)
{
for (int i = 1; i <= N; i++) dp[i][k] = dp[i][k - 2];
for (int i = 1; i < N; i++)
{
dp[f[i]][k] += dp[t[i]][k - 1] - dp[f[i]][k - 2];
dp[t[i]][k] += dp[f[i]][k - 1] - dp[t[i]][k - 2];
}
}
for (int i = 1; i <= N; i++) printf("%d\n", dp[i][K]);
return 0;
}