#L6567. 蓝宝石魔塔

蓝宝石魔塔

题目描述

你在玩一个奇怪的魔塔,这个魔塔的设定是这样的:

  • 地图为一张 nn 个点,n1n-1 条边的简单无向连通图;
  • 你初始在 11 号点,该位置为空地,而其它的点要么有一个蓝宝石,要么有一个怪物;
  • 你初始具有 AA 点攻击和 DD 点防御,每个蓝宝石能够给你增加一定的防御;
  • 当你与怪物接触时会发生战斗,若怪物具有 hh 点生命、aa 点攻击和 dd 点防御,则你在此次战斗中会受到 $\left(\lceil\frac{h}{A - d}\rceil - 1\right) \times (a - D)$ 点伤害。注意:这个公式与一般的魔塔有所不同,当 D>aD > a 时该伤害应为负值而不是 00,相当于给你回复相应的生命值;
  • 当一个非空地节点的蓝宝石被吃掉或怪物被打败时,该节点也会变成空地;
  • 你可以沿着边在空地上任意穿梭,或从空地走向相连的蓝宝石节点或怪物节点并触发对应事件;
  • 当所有节点都变为空地时,游戏结束。

现在,你拥有无限的生命值,他想知道游戏结束时受到的伤害总和的最小值。

输入格式

  • 第一行:一个整数 cc,表示测试点编号。特殊地,样例的测试点编号为 00
  • 第二行:三个整数 nnAADD,分别表示节点数目、初始攻击和初始防御。
  • 接下来的 n1n-1 行,每行两个整数 xix_iyiy_i,表示 xix_iyiy_i 之间有一条无向边。保证给出的是一棵树。
  • 接下来的 n1n-1 行,每行若干个整数,分别表示 2n2 \sim n 号节点的类型。具体地:
    • 第一个数 opt\text{opt},表示节点类型;
    • opt=1\text{opt}=1,接下来输入一个整数 viv_i,表示该点处有一个增加 viv_i 防御的蓝宝石;
    • opt=2\text{opt}=2,接下来输入三个整数 hih_iaia_idid_i,表示该点处有一个 hih_i 生命、aia_i 攻击、did_i 防御的怪物。

输出格式

输出一行一个整数,表示最小伤害总和。

样例 1

输入

00 66 55 33 11 22 11 33 11 44 22 55 33 66 22 1515 2020 33 22 1010 1010 44 11 22 11 11 11 11

输出

141141

说明

先吃掉 44 号点的宝石,此时状态 55/55;再打掉 22 号点的怪物,受到伤害 105105;再吃掉 55 号点的宝石,此时状态 55/66;再打掉 33 号点的怪物,受到伤害 3636;最后吃掉 66 号点的宝石,此时状态 55/77

样例 2

输入

00 66 55 33 11 22 11 33 11 44 22 55 33 66 22 1515 2020 33 22 1010 1010 44 11 22 11 11 11 22

输出

136136

说明

先吃掉 44 号点的宝石,此时状态 55/55;再打掉 33 号点的怪物,受到伤害 4545;再吃掉 66 号点的宝石,此时状态 55/77;再打掉 22 号点的怪物,受到伤害 9191;最后吃掉 55 号点的宝石,此时状态 55/88

数据范围与提示

测试点编号 nn \le 约定
11 1010 -
242 \sim 4 10001000
565 \sim 6 10510^5 蓝宝石数目不超过 1010
7117 \sim 11 - 11 号点外其余点度数不超过 22,且蓝宝石仅出现在叶子节点
121612 \sim 16 11 号点外其余点度数不超过 22
171817 \sim 18 -
192019 \sim 20 3×1053 \times 10^5

对于 100%100\% 的数据,1A,D,h,a,d1051 \le A,D,h,a,d \le 10^5d<Ad < A1v1031 \le v \le 10^3