时间限制: 4.0 秒
空间限制: 1024 MB
题目描述
给定一棵 n 个点的有根树 T,树的节点从 1 到 n 标号,1 为根。每个点有两个整数值 ai,bi。
称一个点集 S 是好的当且仅当其满足以下条件:
∀ u,v∈S (u=v) 满足 u 是 v 的祖先,∃ x∈S,y∈S,使得:
- x 在 u 到 v 的路径上;
- by≤bx。
给出 q 组询问,每组询问给出正整数 c,d,找到一个好的点集 S,最大化 $c\times (\sum\limits_{u\in S}a_u)+d\times (\min\limits_{u\in S}b_u)$。你只需要给出这个最大值。当 S 为空时,认为 u∈Sminbu=0。
输入格式
从标准输入读入数据。
第一行两个整数 n,q,描述树的节点数和询问次数。
接下来 n−1 行,每行两个整数 u,v,描述树的一条边。
接下来 n 行,第 i 行两个整数 ai,bi,描述节点 i 的权值。
接下来 q 行,每行两个整数 c,d,描述一组询问。
输出格式
输出到标准输出。
对于每组询问输出一行一个整数表示答案。
3 4
1 2
1 3
1 -2
-2 1
-5 2
1 1
1 3
3 1
1 10
0
1
1
15
样例 1 解释
四组询问选择的集合依次是 ∅,{2},{1},{3}。
子任务
对于所有测试数据:
- 1≤n,q≤3×105;
- 1≤u=v≤n, 保证给出的 n−1 条边构成一棵树;
- −104≤ai≤104,−109≤bi≤109;
- 1≤c,d≤108。
本题采用捆绑测试,你只有通过一个子任务中的所有测试点才能得到该子任务的分数。
子任务编号 |
n≤ |
q≤ |
特殊性质 |
分值 |
1 |
5 |
× |
3 |
2 |
10 |
5 |
3 |
300 |
4 |
3000 |
3000 |
9 |
5 |
3×105 |
13 |
6 |
7×104 |
200 |
✓ |
14 |
7 |
3×105 |
7 |
8 |
3×105 |
6 |
9 |
7×104 |
200 |
× |
15 |
10 |
3×105 |
13 |
11 |
3×105 |
10 |
特殊性质:∀ 1≤i≤n−1,i 和 i+1 有一条边。