水叮当的舞步

【题目描述】

地毯上的格子有N行N列,每个格子用一个0~5之间的数字代表它的颜色。
水叮当可以随意选择一个0~5之间的颜色,然后轻轻地跳动一步,左上角的格子所在的联通块里的所有格子就会变成她选择的那种颜色。这里连通定义为:两个格子有公共边,并且颜色相同。
水叮当想知道最少要多少步才能把所有格子的颜色变成一样的。

【输入描述】

每个测试点包含多组数据。
每组数据的第一行是一个整数N,表示地摊上的格子有N行N列;
接下来一个N*N的矩阵,矩阵中的每个数都在0~5之间,描述了每个格子的颜色;
N=0代表输入的结束。

【输出描述】

对于每组数据,输出一个整数,表示最少步数。

【样例输入】

2
0 0 
0 0
3
0 1 2
1 1 2
2 2 1
0

【样例输出】

0
3

【数据范围及提示】

对于30%的数据,N <= 5;
对于50%的数据,N <= 6;
对于70%的数据,N <= 7;
对于100%的数据,N <= 8,每个测试点不多于20组数据。
第二组样例解释:
0 1 2  1 1 2  2 2 2  1 1 1
1 1 2  1 1 2  2 2 2  1 1 1
2 2 1  2 2 1  2 2 1  1 1 1

原文地址:https://www.cnblogs.com/Ackermann/p/5812204.html