P0968

[POI2009]Baj 最短回文路

[POI2009]Baj 最短回文路

有 NN 个顶点和 MM 条有向边,每条边都标有一个小写英文字母。一条路径的标签字符串由路径上各条边的字母依次连接而成。若该字符串是回文串,则称这条路径为回文路径。

给定一个长度为 DD 的顶点序列 S1,S2,…,SDS_1,S_2,\ldots,S_D。对于每对相邻顶点 SiS_i 和 Si+1S_{i+1},求从 SiS_i 到 Si+1S_{i+1} 的最短回文路径长度。若不存在这样的路径,则输出 −1-1。

输入格式

第一行包含两个正整数 NN 和 MM,分别表示顶点数和有向边数。

接下来 MM 行,每行包含两个整数和一个小写英文字母,依次表示一条有向边的起点、终点和标记字母。

接下来输入一个整数 DD,表示询问序列的长度。

最后输入 DD 个整数 S1,S2,…,SDS_1,S_2,\ldots,S_D,表示给定的顶点序列。

输出格式

对于序列中的 D−1D-1 对相邻顶点,按照顺序各输出一行。

若存在回文路径,输出最短回文路径的长度;否则输出 −1-1。无需输出路径本身或其标签字符串。

样例输入

6 7
1 2 a
1 3 x
1 4 b
2 6 l
3 5 y
4 5 z
6 5 a
3
1 5 3

样例输出

3
-1

数据范围

  • 2≤N≤4002\le N\le 400;
  • 1≤M≤6×1041\le M\le 6\times 10^4;
  • 2≤D≤1002\le D\le 100;
  • 1≤Si≤N1\le S_i\le N。

来源与许可

本题为 POI 2009 试题「Baj 最短回文路」,题面与测试数据整理自 BZOJ。

样例 1

输入

6 7
1 2 a
1 3 x
1 4 b
2 6 l
3 5 y
4 5 z
6 5 a
3
1 5 3

输出

3
-1