#CF1851E. Nastya 与魔法药水
Nastya 与魔法药水
Nastya 与魔法药水
- 时间限制:3 秒
- 内存限制:256 MiB
题目描述
现有 种药水,第 种药水可以用 个金币买入。每种药水至多有一种合成配方;合成时,所有原料药水会被完全消耗。配方依赖图中不存在环。
Nastya 可以无限制地免费获得 这 种药水。对于每个 ,请分别求出获得一瓶第 种药水所需的最少金币数。
输入格式
第一行包含一个整数 ,表示测试数据组数。
每组测试数据中:
- 第一行包含两个整数 ;
- 第二行包含 个整数 ;
- 第三行包含 个互不相同的整数 ;
- 接下来 行描述配方。第 行先给出 ,再给出 个互不相同的原料编号 。若 ,则第 种药水不能合成,只能购买或免费获得。
输出格式
对于每组测试数据,输出一行 个整数,第 个整数表示获得一瓶第 种药水所需的最少金币数。
样例输入 1
4
5 1
30 8 3 5 10
3
3 2 4 5
0
0
2 3 5
0
3 2
5 143 3
1 3
1 2
0
2 1 2
5 1
5 4 1 3 4
2
2 4 5
3 3 5 4
2 1 4
1 5
0
4 2
1 1 5 4
2 4
3 2 4 3
0
2 2 4
1 2
样例输出 1
23 8 0 5 10
0 143 0
5 0 1 3 4
0 0 0 0
样例输入 2
3
6 3
5 5 4 5 2 2
3 4 5
2 2 5
1 5
3 4 1 6
4 2 6 1 5
0
0
6 2
1 4 4 1 5 2
3 6
4 6 3 4 5
4 6 5 3 4
0
1 5
1 6
0
2 1
4 3
1
0
1 1
样例输出 2
0 0 0 0 0 2
0 0 0 0 0 0
0 0
样例解释
在样例一的第一组数据中,第 种药水免费。第 种药水用第 种药水合成需要 个金币,比直接购买更便宜。第 种药水直接购买比用第 种药水合成更便宜。
数据范围
对于所有数据:
- ;
- ;
- ;
- ;
- ,且 ;
- 同一免费药水列表内的编号互不相同,同一配方内的原料编号互不相同;
- 配方依赖图无环;
- 一个输入文件内所有测试数据的 之和不超过 ;
- 一个输入文件内所有 之和不超过 。
各子任务独立计分。
| 子任务编号 | 分值 | 特殊限制 |
|---|---|---|
| 1 | 30 | 每组测试数据均满足 |
| 2 | 每组测试数据均满足 | |
| 3 | 40 | 无特殊限制 |
来源与改编说明
本题改编自 Codeforces 1851E - Nastya and Potions。中文表述经过规范化,并增加了独立计分的子任务;题意与原题一致。