求调代码(违规紫衫
  • 板块灌水区
  • 楼主Furukawa_Nagisa
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/1/24 21:00
  • 上次更新2024/1/25 07:58:11
查看原帖
求调代码(违规紫衫
1043012
Furukawa_Nagisa楼主2024/1/24 21:00

30分代码 题目here

#include<bits/stdc++.h>
using namespace std;
int n,m,x,y,s[2500][2500],vis[250000],ans[2500][2500],root,sum;
queue<int>v1;queue<int>v2;
int d[8][2]={{2,-1},{2,1},{1,2},{-1,2},{-2,1},{-2,-1},{-1,-2},{1,-2}};
void bfs(int a,int b){
	v1.push(a);v2.push(b);ans[a][b]=0;vis[s[a][b]]=1;
	while(!v1.empty()){
		for(int i=0;i<8;i++){
		int na,nb;
		na=v1.front()+d[i][0];nb=v2.front()+d[i][1];
		if(!vis[s[na][nb]] && na>=1 && na<=n && nb>=1 && nb<=n){
		v1.push(na);v2.push(nb);vis[s[na][nb]]=1;
			ans[na][nb]=ans[v1.front()][v2.front()]+1;
		}
	}
	v1.pop(),v2.pop();
	}
	
}
int main(){
	cin>>n>>m>>x>>y;int cnt=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			s[i][j]=cnt;cnt++;
		}
	}
	bfs(x,y);
	for(int i=1;i<=n;i++){
	for(int j=1;j<=m;j++){
	printf("%-5d", ans[i][j]);
		}
	cout<<endl;
	}
	return 0;
}
2024/1/24 21:00
加载中...