不知道为什么RE了……
本地运行能过样例
是我的问题还是UVA炸了……?
#include<bits/stdc++.h>
using namespace std;
string a,b;
int dx[10]={0,1,1,-1,-1,2,2,-2,-2};
int dy[10]={0,2,-2,2,-2,1,-1,1,-1};
struct data
{
int x,y,s;
}k;
int bfs(int x,int y,int xx,int yy)
{
k={x,y,0};
bool bj[10][10];
queue<data> q;
q.push(k);
while(!q.empty())
{
k=q.front();
q.pop();
for(int i=1;i<=8;i++)
{
if(k.x+dx[i]<=8&&k.x+dx[i]>0&&k.y+dy[i]>0&&k.y+dy[i]<=8&&!bj[k.x+dx[i]][k.y+dy[i]])
{
if(k.x+dx[i]==xx&&k.y+dy[i]==yy)
return k.s+1;
q.push({k.x+dx[i],k.y+dy[i],k.s+1});
bj[k.x+dx[i]][k.y+dy[i]]=1;
}
}
}
}
int main()
{
while(cin>>a>>b)
{
int x,y,xx,yy;
x=a[0]-'a'+1;
y=a[1]-'0';
xx=b[0]-'a'+1;
yy=b[1]-'0';
if(x==xx&&y==yy)
{
cout<<"To get from "<<a<<" to "<<b<<" takes 0 knight moves."<<endl;
continue;
}
cout<<"To get from "<<a<<" to "<<b<<" takes "<<bfs(x,y,xx,yy)<<" knight moves."<<endl;
}
return 0;
}