通知村民
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
三三村有 名村民,33DAI 是村长。他拿到了一条重要通知,需要让全村 名村民都知道。
33DAI 可以亲自通知村民,每通知一人花费 。
已经知道这条通知的村民也能帮忙转告:对第 名村民,只要他知道了通知(无论是 33DAI 亲自通知的,还是别人转告的),他就可以转告至多 名其他村民,每转告一人花费 。
33DAI 想知道:让全部 名村民都知道这条通知,最少要花多少钱?
输入格式
从文件 spread.in 读入数据。
输入的第一行是一个整数 ,表示测试用例组数。
接下来依次给出 组测试用例,每组测试用例的格式为:
- 第一行两个整数 ,分别表示村民人数与 33DAI 亲自通知一人的花费;
- 第二行 个整数 ;
- 第三行 个整数 。
输出格式
输出到文件 spread.out。
对每组测试用例输出一行一个整数,表示让全部 名村民都知道这条通知所需的最小花费。
3
6 3
2 3 2 1 1 3
4 3 2 6 3 6
1 100000
100000
1
4 94
1 4 2 3
103 96 86 57
16
100000
265
样例 1 解释
第 1 组:33DAI 亲自通知第 名村民,花费 ;第 名村民转告第 名村民,花费 ;第 名村民再转告第 名村民,花费 。总花费 ,此时 名村民都知道了通知。
第 2 组只有 名村民,因此只能由 33DAI 亲自通知,花费 ,输出 100000。
第 3 组:33DAI 亲自通知第 名村民,花费 ;第 名村民转告第 名村民,花费 。总花费 ,此时 名村民都知道了通知。
样例 2
见 spread2.in 与 spread2.ans。
样例 3
见 spread3.in 与 spread3.ans。
数据范围
对于所有测试数据,保证:
- ;
- ,;
- ,;
- 所有测试用例的 之和不超过 。
子任务
本题共 20 个测试点,按测试点计分:
| 测试点 | 分值 | 每个测试点 | 特殊限制 |
|---|---|---|---|
| 无额外限制 |
每个测试点单独评分,全部测试点的得分之和即为本题得分。