HXOJ3923. 图与广度优先题七:图上漫步

提交5 通过2
通过率40%
时间限制1000ms
内存限制512MiB

题目描述

题目描述

“图上漫步”是一款在木板上进行的游戏,木板上有一个无向完全图,图中任意两个点之间都有一条直接相连的边,并且每个点都有一条自环边,因此 NN 个点的图有共 (N+1)×N/2(N+1)\times N/2 条边。每条边都有特定的颜色。游戏中有三颗棋子,游戏开始时,每颗棋子分别放在给定的点上。玩家需要依次移动棋子,每次移动只要沿着无向图的边从当前点移到新的点。但是,只有当边的颜色与另外两颗棋子相连的边颜色一样时,棋子才能移动。

图上漫步原题示意图

事实上,“图上漫步”也有单人版,在这种游戏中,一个人要移动三颗棋子,不需要依次移动,但每次只能移动一颗棋子,游戏的任务是:用最少的步数,将所有的棋子移动到同一个位置上。

请你根据图的布局及棋子的开始位置,计算出把所有的棋子移动到同一个位置上的最少步数。

输入格式

输入有多组数据。

对于每组数据,第一个数据是 nn。当 n=0n=0 时表示输入结束。然后是三个整数 p1,p2,p3p_1,p_2,p_3,表示棋子的初始位置。

接下来 nn 行为 n×nn\times n 的矩阵,表示每条边的颜色,都是字母(字母之间用空格隔开)。

矩阵元素 mijm_{ij} 表示点 ii 和 jj 之间的边的颜色。因为游戏图是无向的,你可以认为矩阵是对称的。

输出格式

对于每组数据,输出一行,表示把所有棋子移动到同一个位置上的最少步数,如果无法实现目标,输出 impossible。

样例 1

3 1 2 3
r b r
b b b
r b r
2 1 2 2
y g
g y
0
2
impossible
4
4 1 1
r b g r
b r b g
g b b g
r g g b
0
1
1
1 1 1
r
1
1 1 1
b
0
0
0
6
6 6 3
r g r b b b
g r r g r b
r r r r r g
b g r g r g
b r r r b b
b b g g b r
0
3

数据范围与约定

对于 100%100\% 的数据,1≤N≤501\le N\le50。

(1≤pi≤n1\le p_i\le n)