输入
第1行:1个正整数t,表示数据组数,2≤t≤10。
第2…t+1行:用空格隔开的3个坐标, 每个坐标由2个字符AB组成,A为’A’-‘H’的大写字母,B为’1’~'8’的数字,表示3个棋子的初始位置。
输出
第1…t行:每行1个数字,第i行表示第i组数据中3个棋子移动到同一格的最小行动步数。
样例输入
2
A1 A1 A1
B2 D3 F4
样例输出
0
2
思路:
可以bfs每个骑士走到每个位置的最小步数,然后枚举棋盘的每个位置,算每个骑士步数的加和。取最小的。
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5+7;
int dir[8][2] = {
{
2,1},{
1,2},{
-1,2},{
-2,1},{
-2,-1},{
-1,-2},{
1,-2},{
2,-1}};
map<char,int>mp;
bool vis[10][10];
int step[3