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$ 击败对手所有精灵所需的最小总花费。