A101796.午枫的数字华容道
普及/提高-
官方
通过率:0%
时间限制:2.00s
内存限制:128MB
题目描述
小午最近买了一个数字华容道,数字华容道是一个由 3×3 组成的方格,其中有数字 1∼8 被放置在不同的格子当中,有一个格子是空的,空格子的上下左右四个位置的格子可以通过移动填充到空格子当中,移动之前的位置将变为空格子,目标是将 3×3 的格子从左到右从上到下依次变为 1,2,3,⋯,8 ,最后一个格子为空格子。
但是小午并不满足与此,他在原版的数字华容道上进行了改造,改造后的数字华容道可以形式化的表述为:
华容道中有 9 顶点和 m 条边组成的无向图,以及有 8 个数字,其中 9 个顶点编号为 1∼9 ,对于第 i 条边,连接顶点 ui 和 vi 。8 个数字分别为 1∼8 ,对于数字 i ,被放置在顶点 pi 上。保证所有棋子都放在不同的顶点上。其中有且仅有一个没有数字的空顶点。
现在小枫可以对这个华容道进行以下操作任意次:
- 选择一个与空顶点相邻的顶点上的数字,将这个数字移动到空顶点上。
小枫想通过重复以上操作完成这个数字华容道。当满足以下状态时,数字华容道被认为是完成的:
- 对于 i=1,2,⋯,8 ,数字 i 被放置在顶点 i 上。
请判断小枫能否完成数字华容道。如果可以,输出完成所需的最小操作次数;如果无法完成,请输出 -1 。
输入格式
第一行输入一个正整数 m (0≤m≤36) ,表示华容道中边的数量。
接下来 m+1 行,每行输入两个整数 ui,vi (1≤ui,vi≤9) ,表示第 i 条边连接的两个顶点。保证没有重边和自环。
最后一行输入 8 个整数 pi (1≤pi≤9) ,表示数字 i 起是被放置在顶点 pi 上。
输出格式
如果小枫可以完成数字华容道,输出完成所需的最小操作次数;如果无法完成,请输出 -1 。
输入输出样例
输入#1
5 1 2 1 3 1 9 2 9 3 9 3 9 2 4 5 6 7 8
输出#1
5
说明/提示
通过如下步骤,可以在 5 次操作内完成数字华容道:
- 将数字 2 从顶点 9 移动到顶点 1。
- 将数字 3 从顶点 2 移动到顶点 9。
- 将数字 2 从顶点 1 移动到顶点 2。
- 将数字 1 从顶点 3 移动到顶点 1。
- 将数字 3 从顶点 9 移动到顶点 3。
无法在少于 5 次操作内完成拼图,因此输出 5。
请注意,给定的图不一定是连通的。