CF1851E Nastya and Potions
题目描述
炼金术士 Nastya 很喜欢合成药水。现有 $ n $ 种药水,第 $ i $ 种药水可以用 $ c_i $ 个金币买入。
任何一种药水的合成方案都不超过 $ 1 $ 种。在合成某种药水的过程中,作为原料的药水将会被**完全消耗**。任何药水都不能直接或间接合成它本身。
作为一个经验老道的炼金术士,Nastya 已经可以**无限制地**获得 $ p_1, p_2, \dots, p_k $ 这 $ k $ 种药水,可是她却没法决定接下来要合成哪些药水。于是,她求助于你。对于 $ 1 \le i \le n $,她需要你求出获得第 $ i $ 种药水所需的最少的金币数。
输入格式
每个测试点的第一行包含一个整数 $ t \text{ } (1 \le t \le 10^4) $,表示测试数据组数。
第一行包含两个整数 $ n $ 和 $ k \text{ } (1 \le k < n \le 2 \times 10^5) $,表示药水的种数和 Nastya 已经可以无限制地获得的药水种数。
第二行包含 $ n $ 个整数 $ c_1, c_2, \dots, c_n \text{ } (1 \le c_i \le 10^9) $,表示买入某种药水所需的金币数。
第三行包含 $ k $ 个互不相同的整数 $ p_1, p_2, \dots, p_k \text{ } (1 \le p_i \le n) $,表示 Nastya 已经可以无限制地获得的药水的序号。
接下来的 $ n $ 行表示 $ n $ 种药水各自的合成方案。
第 $ i $ 行的开头是一个整数 $ m_i \text{ } (0 \le m_i < n) $,表示合成第 $ i $ 种药水需要 $ m_i $ 种其他药水。
$ m_i $ 的后面紧跟着 $ m_i $ 个不同的整数 $ e_1, e_2, \dots, e_{m_i} \text{ } (1 \le e_j \le n, e_j \neq i) $,代表合成第 $ i $ 种药水所需的其他药水。
如果 $ m_i = 0 $,表示第 $ i $ 种药水不能被合成,只能被买入。
输入数据保证任何药水都不能直接或间接合成它本身。
输入数据保证单个测试点内 $ n $ 的总和不超过 $ 2 \times 10^5 $。同样,单个测试点内 $ m_i $ 的总和也不超过 $ 2 \times 10^5 $。
输出格式
对于每组测试数据,输出 $ n $ 个整数,代表 Nastya 获得每种药水各自所需的最少金币数。
说明/提示
对于样例一的第一组测试数据,最优方案如下:
- 用药水 $ 2, 4, 5 $ 合成药水 $ 1 $。
- 药水 $ 2 $ 只能买入。
- 药水 $ 3 $ 是无限制供应的。
- 相较于用药水 $ 3, 5 $ 合成药水 $ 4 $,直接买入更划算。
- 药水 $ 5 $ 只能买入。