#aBC224D. [ABC224D] 8 Puzzle on Graph

[ABC224D] 8 Puzzle on Graph

AT_abc224_d [ABC224D] 8 Puzzle on Graph

题目描述

高桥君在路边捡到了一个拼图。
这个拼图由 99 个顶点和 MM 条边组成的无向图,以及 88 个棋子构成。

图中的 99 个顶点分别称为顶点 11、顶点 22\ldots、顶点 99,对于 i=1,2,,Mi=1,2,\ldots,M,第 ii 条边连接顶点 uiu_i 和顶点 viv_i
88 个棋子分别称为棋子 11、棋子 22\ldots、棋子 88,对于 j=1,2,,8j=1,2,\ldots,8,棋子 jj 放在顶点 pjp_j 上。这里保证所有棋子都放在不同的顶点上。请注意,有且仅有一个没有棋子的“空顶点”。

高桥君可以对这个拼图进行如下操作,次数不限(可以为 00 次):

选择一个与空顶点相邻的顶点上的棋子,将该棋子移动到空顶点上。

高桥君希望通过重复上述操作,使拼图“完成”。当满足以下状态时,拼图被认为是完成的:

对于 j=1,2,,8j=1,2,\ldots,8,棋子 jj 放在顶点 jj 上。

请判断高桥君是否能够完成拼图。如果可以,请输出完成所需操作次数的最小值;如果无法完成,请输出 1-1

输入格式

输入以如下格式从标准输入读入:

MM
u1u_1 v1v_1
u2u_2 v2v_2
\vdots
uMu_M vMv_M
p1p_1 p2p_2 \ldots p8p_8

输出格式

如果高桥君能够完成拼图,输出完成所需操作次数的最小值。
如果无法完成,输出 1-1

输入输出样例 #1

输入 #1

5
1 2
1 3
1 9
2 9
3 9
3 9 2 4 5 6 7 8

输出 #1

5

输入输出样例 #2

输入 #2

5
1 2
1 3
1 9
2 9
3 9
1 2 3 4 5 6 7 8

输出 #2

0

输入输出样例 #3

输入 #3

12
8 5
9 6
4 5
4 1
2 5
8 9
2 1
3 6
8 7
6 5
7 4
2 3
1 2 3 4 5 6 8 7

输出 #3

-1

输入输出样例 #4

输入 #4

12
6 5
5 4
4 1
4 7
8 5
2 1
2 5
6 9
3 6
9 8
8 7
3 2
2 3 4 6 1 9 7 8

输出 #4

16

说明/提示

限制条件

  • 0M360 \leq M \leq 36
  • 1ui,vi91 \leq u_i, v_i \leq 9
  • 给定的图中没有重边和自环
  • 1pj91 \leq p_j \leq 9
  • jjpjpjj \neq j' \Rightarrow p_j \neq p_{j'}
  • 所有输入均为整数

样例解释 1

通过如下步骤,可以在 55 次操作内完成拼图:

  1. 将棋子 22 从顶点 99 移动到顶点 11
  2. 将棋子 33 从顶点 22 移动到顶点 99
  3. 将棋子 22 从顶点 11 移动到顶点 22
  4. 将棋子 11 从顶点 33 移动到顶点 11
  5. 将棋子 33 从顶点 99 移动到顶点 33
    无法在少于 55 次操作内完成拼图,因此输出 55
    请注意,给定的图不一定是连通的。

样例解释 2

拼图一开始就已经完成,因此完成所需的最小操作次数为 00

样例解释 3

无法通过操作完成拼图,因此输出 1-1

由 ChatGPT 4.1 翻译