CF213A Game
题目描述
F 和 R 喜欢玩电脑游戏。F 最近发现了一个新游戏,R 也觉得很有趣。
这个游戏包括 $n$ 个部分,而为了完成某个部分,可能需要先完成其它的几个部分。
我们知道这个游戏总是能够完成的,也就是说,它的各个部分之间不会发生循环依赖关系。
R有3个可以玩游戏的电脑,我们用1,2,3来给电脑编号。电脑被放置在不同的房间。
同时需要注意的是,游戏的每个部分只能在其中的一台电脑上完成。
R可以完成下面的动作:
- 在某些电脑上完成某些工作,并且在任意电脑上完成任意的工作都需要花费 1 小时。
- 从 1 号电脑移动到 2 号电脑,花费的时间是 1 小时。
- 从 1 号电脑移动到 3 号电脑,花费的时间是 2 小时。
- 从 2 号电脑移动到 1 号电脑,花费的时间是 2 小时。
- 从 2 号电脑移动到 3 号电脑,花费的时间是 1 小时。
- 从 3 号电脑移动到 1 号电脑,花费的时间是 1 小时。
- 从 3 号电脑移动到 2 号电脑,花费的时间是 2 小时。
帮助R找到花费最少时间完成游戏的方法。在开始的时候,R 可以选择在任意电脑的位置。
输入格式
第一行包含数字 $n (1 \leq n \leq 200)$,表示游戏包含 $n$ 个部分。
下面一行包含 $n$ 个整数,第 $i$ 个整数 $c_i (1 \leq c_i \leq 3)$ 表示用来完成第 $i$ 个部分的电脑的编号。
下面的 $n$ 行用来描述游戏的每个部分。
第 $i$ 行的第 $1$ 个数为 $k_i (0 \leq k_i \leq n-1)$,
随后的 $k_i$ 个不同的数 $a_{i, j} (1 \leq a_{i, j} \leq n, a_{i, j} \neq i)$,
表示第 $i$ 个部分需要依赖的其它 $k_i$ 个部分的电脑的编号。
每行的数都是用一个空格隔开的。
你可以假设游戏的每个部分是用 $1$ 到 $n$ 来编号的,并且游戏的不同部分不存在循环依赖。
输出格式
输出问题的答案。
说明/提示
注意第二个样例:在开始游戏的时候,最好的策略是选择 3 号电脑的位置。
首先完成第 5 部分,然后到 1 号电脑完成第 3 和第 4 部分,然后到 2 号电脑完成第 1 和第 2 部分。
这样总的花费的时间是 $1+1+2+1+2 = 7$。