aaa
  • 板块灌水区
  • 楼主W_HELLO2024
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/6/8 11:52
  • 上次更新2024/6/8 14:35:54
查看原帖
aaa
1325810
W_HELLO2024楼主2024/6/8 11:52
#include<bits/stdc++.h>
using namespace std;
int MIN=INT_MAX,m,n,sx,sy,ex,ey;
int dx[]={-2,-1,1,2, 2, 1,-1,-2};
int dy[]={ 1, 2,2,1,-1,-2,-2,-1};
struct box{
	int px,py,s;
};
box boxes[1000000];
int visited[500][500];

void bfs(int a,int b){
	for(int i=0;i<500;i++)
		for(int j=0;j<500;j++)
			visited[i][j]=0;
	int t=0,w=0;
	boxes[w].px=a;boxes[w].py=b;boxes[w].s=0;
	visited[boxes[w].px][boxes[w].py]=1;w++;
	
	while(t!=w){
		int tx,ty,ts;
		tx=boxes[t].px;
		ty=boxes[t].py;
		ts=boxes[t].s;
		if(tx==ex&&ty==ey){MIN=ts;return;}
		for(int i=0;i<8;i++){
			if(tx+dx[i]<1||tx+dx[i]>n||ty+dy[i]<1||ty+dy[i]>m||visited[tx+dx[i]][ty+dy[i]])
				continue; 
			boxes[w].px=tx+dx[i];
			boxes[w].py=ty+dy[i];
			boxes[w].s=ts+1;
			visited[boxes[w].px][boxes[w].py]=1;
			w++;
		}
		t++;
	}
} 
int main(){
	//freopen("P1443_4.in","r",stdin);
	cin>>n>>m>>sx>>sy;
	for(ex=1;ex<=n;ex++){
		for(ey=1;ey<=m;ey++){
			MIN=INT_MAX;
			//dfs(sx,sy,0);
			bfs(sx,sy);
			if(MIN==INT_MAX) printf("%-5d",-1);
			else printf("%-5d",MIN);
		}
		cout<<endl;
	}
} 

2024/6/8 11:52
加载中...