atcoder#ABC224D. [ABC224D] 8 Puzzle on Graph
[ABC224D] 8 Puzzle on Graph
题目描述
高橋君は道端であるパズルを拾いました。
このパズルは、 個の頂点と 本の辺からなる無向グラフ、および、 つのコマで構成されます。
グラフの つの頂点はそれぞれ頂点 、頂点 、、頂点 と呼ばれ、 について、 番目の辺は頂点 と頂点 を結んでいます。
つのコマはそれぞれコマ 、コマ 、、コマ と呼ばれ、 について、コマ は頂点 に置かれています。 ここで、すべてのコマはそれぞれ異なる頂点に置かれていることが保証されます。 コマが置かれていない「空の頂点」がただ一つ存在することに注意してください。
高橋君はこのパズルに対して下記の操作を好きな回数( 回でもよい)だけ行うことができます。
空の頂点に隣接する頂点に置かれたコマを つ選び、選んだコマを空の頂点に移動する。
高橋君は上記の操作を繰り返して、このパズルを「完成」させようとしています。 パズルは、下記の状態を満たしたときに完成となります。
について、コマ は 頂点 に置かれている。
高橋君がパズルを完成させることが可能かどうかを判定し、可能な場合はそのために必要な操作回数の最小値を出力してください。
输入格式
入力は以下の形式で標準入力から与えられる。
输出格式
高橋君がパズルを完成させることが可能な場合は、そのために必要な操作回数の最小値を出力せよ。 高橋君がパズルを完成させることが不可能な場合は、 を出力せよ。
题目大意
高桥在路上捡到了一个谜题玩具,这个谜题由 个顶点 条无向边,和 个棋子组成。顶点编号为 ,第 条边连接顶点 和,棋子编号为 。图没有重边和自环。
初始状态下,编号 的棋子在编号 顶点上,每个顶点最多只能有一个棋子。每次移动,可以将一个棋子移动到和它相邻的没有棋子的顶点上。相邻指的是两个顶点之间有一条边直接连接。
如果对 ,编号 的棋子都移动到了编号 的顶点上,这个谜题就解开了。
问高桥最少需要几次移动才能解开谜题。如果无法解开谜题,输出 。
5
1 2
1 3
1 9
2 9
3 9
3 9 2 4 5 6 7 8
5
5
1 2
1 3
1 9
2 9
3 9
1 2 3 4 5 6 7 8
0
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
-1
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
16
提示
制約
- 与えられるグラフは多重辺、自己ループを持たない
- 入力はすべて整数
Sample Explanation 1
下記の手順によって、 回の操作でパズルを完成させることができます。 1. コマ を頂点 から頂点 に移動する。 2. コマ を頂点 から頂点 に移動する。 3. コマ を頂点 から頂点 に移動する。 4. コマ を頂点 から頂点 に移動する。 5. コマ を頂点 から頂点 に移動する。 一方、 回未満の操作でパズルを完成させることはできません。よって、 を出力します。 与えられるグラフは連結とは限らないことに注意してください。
Sample Explanation 2
パズルは初めから完成しています。よって、完成させるために必要な操作回数の最小値は 回です。
Sample Explanation 3
操作の繰り返しによってパズルを完成させることができないので、 を出力します。