77分,求助
查看原帖
77分,求助
1147190
dldltangmen楼主2024/4/23 19:32
#include<bits/stdc++.h>
using namespace std;
int n,m,a[105][105],vis[105][105],dx[8],dy[8],ans[105][105];
struct node{
	int x,y;
};
queue<node> q;
void bfs(int x,int y){
	vis[x][y]=1;
	q.push({x,y});
	while(!q.empty()){
		int tx=q.front().x,ty=q.front().y;
		for(int i=0;i<=7;i++){
			int x=tx+dx[i],y=ty+dy[i];
			if(x>=1&&x<=n&&y>=1&&y<=m&&(a[x][y]==1||a[x][y]==4)&&!vis[x][y]){
				ans[x][y]=ans[tx][ty]+1;
				if(a[x][y]==4){
					cout<<ans[x][y];
					return ;
				}
				vis[x][y]=1;
				q.push({x,y});
			}
		}
		q.pop(); 
	}
}
int main(){
	int m1,m2,x,y;
	cin>>n>>m>>m1>>m2;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
			if(a[i][j]==3){
				x=i;
				y=j;
			}
		}
	}
	dx[0]=-m1,dx[1]=-m2,dx[2]=m2,dx[3]=m1,dx[4]=m1,dx[5]=-m2,dx[6]=-m2,dx[7]=-m1;
	dy[0]=m2,dy[1]=m1,dy[2]=m1,dy[3]=m2,dy[4]=-m2,dy[5]=m1,dy[6]=-m1,dy[7]=-m2;
	bfs(x,y);
	return 0;
}
2024/4/23 19:32
加载中...