编程题
### 问题描述 在一个包含 $n$ 个结点的环上,每个结点上放置了 $x$ 个物品。我们的任务是从环上取出所有种类的物品。 取物品的规则如下: - 如果当前取第 $i$ 个结点上的物品,则接下来必须取第 $i+1$ 个结点上的物品。特别地,如果当前在取最后一个结点上的物品,则接下来必须取第一个结点上的物品。 - 如果当前取第 $i$ 个结点上的物品,则必须将该结点上的所有物品都取出。 - 我们可以自由选择从哪个结点开始取物品。 - 当取出的物品正好集齐所有种类时,取物品的过程立即结束。 ### 输入描述 第一行输入两个整数 $n$ 和 $k$ ,分别表示结点的数量和物品的种类数。我们用 $1$ 到 $k$ 之间的所有整数来表示不同种类的物品。 接下来输入 $n$ 行,第 $i$ 行的输入以数字 $x$ 开始,表示第 $i$ 个结点上放置了 $x$ 个物品。接下来输入 $x$ 个整数,分别表示这 $x$ 个物品的种类。 数据保证: $1 \leq n,k \leq 10^6$ 。 ### 输出描述 输出一个数字,表示能取到所有种类物品需要拿的最小物品数。 如果不能拿到所有物品,输出 $-1$ 。 ### 样例输入 ``` 5 3 1 2 1 3 2 1 1 2 2 2 1 1 ``` ### 样例输出 ``` 3 ``` ### 说明 样例数据中可以从最后一个结点开始拿物品,然后按顺序会拿第一个结点中的物品。这样可以只拿三个物品就拿到所有的 $3$ 种物品。
查看答案
赣ICP备20007335号-2