P16959 [SCCPC 2026] 精灵对战

题目描述

小 $z$ 爱玩洛克王国,尤其喜欢和别的玩家进行精灵对战。 现在有 $n$ 种精灵,编号为 $1$ 到 $n$。精灵之间存在克制关系。对于每种精灵,它最多被 $k$ 种精灵克制。 当小 $z$ 的精灵 $A$ 与对手的精灵 $B$ 对战时,结果如下: - 若 $A$ 克制 $B$,且 $B$ 不克制 $A$,则 $B$ 被击倒,$A$ 继续战斗; - 若 $B$ 克制 $A$,且 $A$ 不克制 $B$,则 $A$ 被击倒,$B$ 继续战斗; - 若 $A$ 与 $B$ 之间不存在任何克制关系,则二者同归于尽; - 若 $A$ 与 $B$ 互相克制,则小 $z$ 可以通过高超的博弈技巧击败对手的精灵,即 $B$ 被击倒,$A$ 继续战斗。 小 $z$ 已经提前知道了对手的精灵出战顺序,这是一个长度为 $m$ 的序列,序列中可以出现重复的精灵。 小 $z$ 需要合理安排自己的精灵出战顺序来击败对手的所有精灵。对战过程中,当前精灵没有被击倒时,不能更换精灵;只有当前精灵被击倒或同归于尽后,小 $z$ 才能派出新的精灵。小 $z$ 可以多次派出同一种精灵。 派出一只精灵需要花费 $1$ 的代价。请你求出小 $z$ 击败对手所有精灵所需的最小总花费。

输入格式

第一行包含三个整数 $n,m,k$($1 \le n,m \le 10^5, 1 \le k \le 30$),分别表示精灵种类数、对手精灵出战序列长度,以及每种精灵最多被克制的精灵种类数。 接下来 $n$ 行,第 $i$ 行首先包含一个整数 $s_i$($0 \le s_i \le k$),表示克制第 $i$ 种精灵的精灵种类数;随后包含 $s_i$ 个整数 $x_{i,1},x_{i,2},\ldots,x_{i,s_i}$($1 \le x_{i,j} \le n,x_{i,j} \neq i$),表示克制第 $i$ 种精灵的精灵编号。 最后一行包含 $m$ 个整数 $a_1,a_2,\ldots,a_m$($1 \le a_i \le n$),表示对手的精灵出战序列。 输入保证每一行克制关系中的精灵编号互不相同,且不会出现自克制关系。

输出格式

输出一行一个整数,表示小 $z$ 击败对手所有精灵所需的最小总花费。