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$。