佬求助
查看原帖
佬求助
1124363
heyworld楼主2024/3/2 01:10
#include<bits/stdc++.h>
using namespace std;
#define x first 
#define y second 
const int N=105;


typedef pair<int,int> pii;
queue<pii> q;
int xb,yb,xw,yw;
int d[N][N];
int dx[15]={-2,-1,1,2,2,2,2,1,-1,-2,2,-2},
	dy[15]={2,2,2,2,1,-1,-2,-2,-2,-2,1,-1};


int bfs(int a,int b)
{
	while(q.empty()) q.pop();
memset(d,-1,sizeof d);
	d[a][b]=0;
	q.push({a,b});
	while(q.size()){
	for(int i=0;i<15;i++)
	{
		pii t=q.front();
		q.pop();
		int x=t.first+dx[i],y=t.second+dy[i];
		if(x<1||y<1||d[x][y]!=-1) continue;
		
		d[x][y]=d[t.first][t.second]+1;
		q.push({x,y});
		if(x==1&&y==1) return d[x][y]; 
		
	}
}
	
}



int main()
{
cin>>xb>>yb>>xw>>yw;

cout<<bfs(xb,yb)<<endl<<bfs(xw,yw);



	return 0;
}

2024/3/2 01:10
加载中...