测试都是对的,但是提交全RE,蒟蒻求助
查看原帖
测试都是对的,但是提交全RE,蒟蒻求助
502402
SSPM楼主2024/10/11 22:31
#include<bits/stdc++.h>
using namespace std;
int step[40][40];
int vis[40][40];
int dx[20]={0,1,1,2,2,2,2,-1,-1,-2,-2,-2,-2};
int dy[20]={0,-2,2,-1,-2,1,2,-2,2,-2,-1,1,2};
int maxx,maxy;
void bfs(int x,int y){
	queue<pair<int,int>>q;
	q.push({x,y});
	vis[x][y]=1;
	while(!q.empty()){
		int nx=q.front().first,ny=q.front().second;
		if(nx==1&&ny==1){
			cout<<step[nx][ny]<<endl;
			return ;
		}
		q.pop();
		for(int i=1;i<=12;i++){
			int xx=nx+dx[i],yy=ny+dy[i];
			if(xx>=1&&yy>=1&&xx<=maxx&&yy<=maxy&&!vis[xx][yy]){
				vis[xx][yy]=1;
				step[xx][yy]=step[nx][ny]+1;
				q.push({xx,yy});
			}
		}
	}
}
int main(){
	int mx[2],my[2];
	cin>>mx[1]>>my[1]>>mx[2]>>my[2];
	maxx=max(mx[1],mx[2])+5;
	maxy=max(my[1],my[2])+5;
	for(int i=1;i<=2;i++){
		memset(vis,0,sizeof(vis));
		memset(step,0,sizeof(step));
		bfs(mx[i],my[i]);
	}
	return 0;
}

2024/10/11 22:31
加载中...