#CF932F. C122【李超树合并+DP】Escape Through Leaf

    ID: 1119 传统题 3000ms 256MiB 尝试: 35 已通过: 27 难度: 1 上传者: 标签>线段树树形 DP李超线段树线段树合并省选/NOI−

C122【李超树合并+DP】Escape Through Leaf

CF932F Escape Through Leaf

题目描述

给定一棵有 nn 个节点的树(节点编号为 11nn),以节点 11 为根。每个节点都有两个关联值,分别为 aia_ibib_i

你可以从某个节点跳到其子树中的任意节点。从节点 xx 跳到节点 yy 的花费为 ax×bya_x \times b_y。由一次或多次跳跃组成的路径的总花费为各次跳跃花费之和。对于每个节点,计算从该节点到达任意叶子节点的最小总花费。注意,根节点永远不会被视为叶子节点,即使它的度数为 11

注意,不能从一个节点跳到自身。

输入格式

第一行输入一个整数 nn2n1052 \leq n \leq 10^5),表示树的节点数。

第二行输入 nn 个用空格分隔的整数 a1,a2,,ana_1,a_2,\ldots,a_n105ai105-10^5 \leq a_i \leq 10^5)。

第三行输入 nn 个用空格分隔的整数 b1,b2,,bnb_1,b_2,\ldots,b_n105bi105-10^5 \leq b_i \leq 10^5)。

接下来的 n1n-1 行,每行输入两个用空格分隔的整数 uiu_iviv_i1ui,vin1 \leq u_i, v_i \leq n),表示树中节点 uiu_iviv_i 之间有一条边。

输出格式

输出 nn 个用空格分隔的整数,第 ii 个整数表示从节点 ii 到达任意叶子节点的最小花费。

输入输出样例 #1

输入 #1

3
2 10 -1
7 -7 5
2 3
2 1

输出 #1

10 50 0 

输入输出样例 #2

输入 #2

4
5 -10 5 7
-8 -80 -3 -10
2 1
2 4
1 3

输出 #2

-300 100 0 0 

说明/提示

在第一个样例中,节点 33 已经是叶子节点,因此花费为 00。对于节点 22,跳到节点 33 的花费为 a2×b3=50a_2 \times b_3 = 50。对于节点 11,可以直接跳到节点 33,花费为 a1×b3=10a_1 \times b_3 = 10

在第二个样例中,节点 33 和节点 44 是叶子节点,因此花费为 00。对于节点 22,跳到节点 44 的花费为 a2×b4=100a_2 \times b_4 = 100。对于节点 11,先跳到节点 22,花费为 a1×b2=400a_1 \times b_2 = -400,然后从 22 跳到 44,花费为 a2×b4=100a_2 \times b_4 = 100

由 ChatGPT 4.1 翻译