#icpc2015summerday2d. [icpc2015summer_day2_d]真っ暗な部屋

[icpc2015summer_day2_d]真っ暗な部屋

问题陈述

当A先生醒来时,他发现自己身处在一个漆黑的房间里。看起来A先生似乎迷失在了一个由N个房间构成的地牢中。尽管你无法知道A先生迷失在了哪个房间,但幸运的是你得到了地牢的地图。现在你需要给A先生提供指示,让他走到光亮的房间里。

有N个房间中的M个房间是黑暗的,分别是D1,D2,...,DM号房间。而且每个房间都有K条单行道,从第i个房间出发的道路连接到第vi1,vi2,...,viK个房间。你可以按顺序让A先生走过a1,a2,...,al号道路。然而,一旦A先生到达了光亮的房间,他将忽略之后的指示。由于在给出指示之前和之后无法得知A先生所在的房间信息,因此你需要传达一系列指示,无论A先生在哪个房间,他都能够到达光亮的房间。

请计算出这些指示中最短的长度。


约束条件

  • 2N1002 \leq N \leq 100
  • 1Mmin(16,N1)1 \leq M \leq min(16, N-1)
  • 1KN1 \leq K \leq N
  • 1DiN1 \leq Di \leq N
  • DiDi 互不相同
  • 1vi,jN1 \leq vi,j \leq N
  • 每个黑暗房间至少可以到达一个光亮的房间

输入格式

输入以以下格式从标准输入中给出:NN MM KK D1D1 D2D2 ...... DMDM v1,1v_{1,1} v1,2v_{1,2} ...... v1,Kv_{1,K} v2,1v_{2,1} v2,2v_{2,2} ...... v2,Kv_{2,K} ... vN,1v_{N,1} vN,2v_{N,2} ...... vN,Kv_{N,K}

输出格式

输出一个整数,表示答案。


示例输入 1


4 2 2
1 2
2 4
3 1
4 2
1 3

示例输出 1


2
```![](http://www.geocities.jp/unko_der/sample1.png)
如果给出指示1, 1,

*   如果A先生初始位置是房间1,他在第二次移动后到达房间3
*   如果A先生初始位置是房间2,他在第一次移动后到达房间3

* * *

### 示例输入 2

```plain

3 2 2
1 2
2 3
1 2
2 1

示例输出 2


3
```![](/img/other/jag2015_summer_day2/maki/sample2.png)
如果给出指示2, 1, 2,

*   如果A先生初始位置是房间1,他在第一次移动后到达房间3
*   如果A先生初始位置是房间2,他在第三次移动后到达房间3

* * *

### 示例输入 3

```plain

6 3 3
1 2 3
4 1 1
2 5 2
3 3 6
4 4 4
5 5 5
6 6 6

示例输出 3


3
```![](/img/other/jag2015_summer_day2/maki/sample3.png)
请注意非连通的情况、自环和重边的情况

* * *