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

[icpc2015summer_day2_d]真っ暗な部屋

题目描述

睁开眼睛,A君发现自己在一个漆黑的房间里,他身处在一个由 NN 个房间(其中 MM 间是小黑屋)组成的迷宫内,但是不知道自己在哪个房间,现在你有这个迷宫的地图,你需要带领A君走出迷宫。

虽然A君不知道自己在哪,但是他面前有 KK 条道路,你可以通过许多指令告诉他该走第几条道路最终到达明亮的屋子。当然,如果指令还未结束,但A君已经到达明亮的屋子时,他便不会再执行指令。

注意:你不知道A君在哪个小黑屋,所以你需要给A君一串万能的指令,让他无论在哪个小黑屋,都可以通过这串指令走到明亮的屋子。

由于A君的记忆力不好,所以你需要让这串指令的长度尽可能的小,问这串指令的最短长度。

输入格式

第一行三个整数 N,M,KN,M,K

第二行 MM 个整数,DiD_i 代表第 ii 个小黑屋编号是 DiD_i

接下来 NN 行,每行 KK 个整数 vi,jv_{i,j},第 ii 行第 jj 个数表示房间 ii 到房间 jj 有一条单向道路(可能存在自环)。

输出格式

一个整数,代表最短的指令长度。

说明/提示

数据规模与约定

2  N  1002\ \leq\ N\ \leq\ 100

1  M  min(16, N1)1\ \leq\ M\ \leq\ min(16,\ N-1)

1  K  N1\ \leq\ K\ \leq\ N

1  Di  N1\ \leq\ D_i\ \leq\ N

1  vi, j  N1\ \leq\ v_{i,\ j}\ \leq\ N

保证每个 DiD_i 不相同,且每个小黑屋都至少有一条路径可以到达明亮的屋子。

样例解释1

如果你给出指令 1,1

当A君在 11 号屋子时,他会走道路 v1,1v_{1,1}(即道路 11) 到达 22 号屋子,再从 22 号屋子走 v2,1v_{2,1} 到达 33 号屋子(亮屋)。

当A君在 22 号屋子时,他会走 v2,1v_{2,1} 到达 33 号屋子,由于此时A君已经到达明亮的屋子,所以他不会再去执行下一条指令(即从 33 号屋子走 v3,1v_{3,1} 到达 44 号屋子)。

样例解释2

如果你给出指令 2,1,2

当A君在 11 号屋子时,他会走 v1,2v_{1,2} 到达 33 号屋子(此时情况处理见样例解释1)。

当A君在 22 号屋子时,他会走 v2,2v_{2,2} 到达 22 号屋子,走 v2,1v_{2,1} 到达 11 号屋子,走 v1,2v_{1,2} 到达 33 号屋子。

样例解释3

此时给出指令 1,2,3 即可。

注意

要求输出指令的最短长度,而不是指令。