30pts求助,没开O2TLE,开了O2MLE
查看原帖
30pts求助,没开O2TLE,开了O2MLE
225807
bobo_code楼主2022/7/29 23:26
#include<iostream>
#include<iomanip>
#include<queue>
#include<cstring>
using namespace std;
const int MAXN=400+10;
int map[MAXN][MAXN],n,m,sx,sy;
int dx[9]={0,-2,-1,1,2,2,1,-1,-2},
	dy[9]={0,1,2,2,1,-1,-2,-2,-1};
queue<int> q1,q2,q3;
int main(){
	cin>>n>>m>>sx>>sy;
	for(int i=0;i<=n;i++){
		for(int j=0;j<=m;j++){
			map[i][j]=-1;
		}
	}
	q1.push(sx);
	q2.push(sy);
	q3.push(0);
	while(!q3.empty()){		
		int x=q1.front(),y=q2.front(),s=q3.front();
		q1.pop(),q2.pop(),q3.pop();
		map[x][y]=s;
		for(int i=1;i<=8;i++){
			int tx=x+dx[i];
			int ty=y+dy[i];
			if(tx>0&&tx<=n&&ty>0&&ty<=m&&map[tx][ty]==-1){
				q1.push(tx);
				q2.push(ty);
				q3.push(s+1);
			}
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cout<<setw(5)<<left<<map[i][j];
		}
		cout<<endl;
	}	
	return 0;
}
2022/7/29 23:26
加载中...