A101796.午枫的数字华容道

普及/提高-

官方

通过率:0%

时间限制:2.00s

内存限制:128MB

题目描述

小午最近买了一个数字华容道,数字华容道是一个由 3×33\times3 组成的方格,其中有数字 181\sim8 被放置在不同的格子当中,有一个格子是空的,空格子的上下左右四个位置的格子可以通过移动填充到空格子当中,移动之前的位置将变为空格子,目标是将 3×33\times 3 的格子从左到右从上到下依次变为 1,2,3,,81,2,3,\cdots,8 ,最后一个格子为空格子。

但是小午并不满足与此,他在原版的数字华容道上进行了改造,改造后的数字华容道可以形式化的表述为:

华容道中有 99 顶点和 mm 条边组成的无向图,以及有 88 个数字,其中 99 个顶点编号为 191\sim 9 ,对于第 ii 条边,连接顶点 uiu_iviv_i88 个数字分别为 181\sim 8 ,对于数字 ii ,被放置在顶点 pip_i 上。保证所有棋子都放在不同的顶点上。其中有且仅有一个没有数字的空顶点

现在小枫可以对这个华容道进行以下操作任意次:

  • 选择一个与空顶点相邻的顶点上的数字,将这个数字移动到空顶点上。

小枫想通过重复以上操作完成这个数字华容道。当满足以下状态时,数字华容道被认为是完成的:

  • 对于 i=1,2,,8i=1,2,\cdots,8 ,数字 ii 被放置在顶点 ii 上。

请判断小枫能否完成数字华容道。如果可以,输出完成所需的最小操作次数;如果无法完成,请输出 -1

输入格式

第一行输入一个正整数 mm (0m36)(0\leq m\leq 36) ,表示华容道中边的数量。

接下来 m+1m+1 行,每行输入两个整数 ui,viu_i,v_i (1ui,vi9)(1\leq u_i,v_i\leq9) ,表示第 ii 条边连接的两个顶点。保证没有重边和自环。

最后一行输入 88 个整数 pip_i (1pi9)(1\leq p_i\leq 9) ,表示数字 ii 起是被放置在顶点 pip_i 上。

输出格式

如果小枫可以完成数字华容道,输出完成所需的最小操作次数;如果无法完成,请输出 -1

输入输出样例

  • 输入#1

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

    输出#1

    5

说明/提示

通过如下步骤,可以在 55 次操作内完成数字华容道:

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