RT WA了最后两个点
#include<bits/stdc++.h>
using namespace std;
int n,m,sx,sy,stx,sty,e1,e2;
map <int,map<int,int> > vis;
int dx[12]={1,1,2,2,2,2,-1,-1,-2,-2,-2,-2};
int dy[12]={-2,2,-2,-1,1,2,-2,2,-1,1,-2,2};
struct stu{
int x,y,s;
};
bool Noway(int x1,int y1)
{
if(x1>90&&y1>90) return true;
if(vis[x1][y1]==1) return true;
return false;
}
int bfs(int x,int y)
{
queue <stu> q;
stu cur,nxt;
cur.x=x;
cur.y=y;
cur.s=0;
vis[x][y]=1;
q.push(cur);
while(!q.empty())
{
cur=q.front();q.pop();
for(int i=0;i<12;i++)
{
int nx,ny;
nx=cur.x+dx[i];
ny=cur.y+dy[i];
if(Noway(nx,ny)) continue;
vis[nx][ny]=1;
nxt.x=nx;
nxt.y=ny;
nxt.s=cur.s+1;
q.push(nxt);
if(nx==e1&&ny==e2)
{
return cur.s+1;
}
}
}
}
int main()
{
cin>>sx>>sy>>stx>>sty;
e1=sx,e2=sy;
cout<<bfs(1,1)<<endl;
e1=stx,e2=sty;
vis.clear();
cout<<bfs(1,1);
return 0;
}