#include<bits/stdc++.h>
using namespace std;
struct node{
int x,y,step;
}que[1010];
int x1,yyy,x2,y2;
bool vis[100][100];
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};
void bfs(int x,int y){
if(x==1&&y==1){
cout<<1<<endl;
return ;
}
int head=0,tail=1,xx,yy;
que[1].x=x;
que[1].y=y;
que[1].step=0;
vis[x][y]=true;
while(head<tail){
head++;
for(int i=0;i<12;i++){
xx=que[head].x+dx[i];
yy=que[head].y+dy[i];
if(xx<1||xx>x||yy<1||yy>y) continue;
if(vis[xx][yy]==false){
vis[xx][yy]=1;
tail++;
que[tail].x=xx;
que[tail].y=yy;
que[tail].step=que[head].step+1;
if(xx==1&&yy==1){
cout<<que[tail].step<<endl;
return ;
}
}
}
}
return ;
}
int main(){
cin>>x1>>yyy>>x2>>y2;
bfs(x1,yyy);
memset(vis,false,sizeof(vis));
bfs(x2,y2);
return 0;
}
谢谢大佬们