A90654.Get Everything
普及+/提高
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
有 N 个上锁的宝箱,编号为 1 到 N。
商店里出售 M 把钥匙。第 i 把钥匙售价为 ai 日元,可以打开 bi 个宝箱,分别是 ci1、ci2、...、cibi。购买的钥匙可以重复使用任意次数。
请你求出打开所有宝箱所需的最小费用。如果无法打开所有宝箱,则输出 −1。
输入格式
第一行输入两个整数 N, M,分别表示宝箱的数量和钥匙的个数。
接下来输入 2M 行,用连续两行描述每把钥匙:
- 第一行包含两个整数 ai 和 bi,分别表示第 i 把钥匙的售价和能打开的宝箱种类数。
- 第二行包含 bi 个整数,分别是 ci1、ci2、...、cibi ,表示第 i 把钥匙能够打开的宝箱。
输出格式
请输出打开所有宝箱所需的最小费用。如果无法打开所有宝箱,则输出 −1。
输入输出样例
输入#1
2 3 10 1 1 15 1 2 30 2 1 2
输出#1
25
输入#2
12 1 100000 1 2
输出#2
-1
输入#3
4 6 67786 3 1 3 4 3497 1 2 44908 3 2 3 4 2156 3 2 3 4 26230 1 2 86918 1 3
输出#3
69942
说明/提示
限制条件
- 所有输入均为整数。
- 1≤N≤12
- 1≤M≤103
- 1≤ai≤105
- 1≤bi≤N
- 1≤ci1<ci2<...<cibi≤N
样例解释 1
如果购买钥匙 1 和钥匙 2,可以打开所有宝箱,此时总费用为 25 日元,这是最小值。
样例解释 2
无法打开所有宝箱。