不知为何爆RE,求大佬帮调
查看原帖
不知为何爆RE,求大佬帮调
1110244
qwertasdf12345楼主2025/7/22 10:14
#include <bits/stdc++.h>
//天官赐福,百无禁忌
//我听到了【十日终焉】的回响 !完结撒花! 
using namespace std;
typedef pair<int,int> PII;
const int N=10100;
int n,m,sx,sy,ex,ey,ans[N][N];
int dx[]={0,1,0,-1},dy[]={1,0-1,0};
char g[N][N];
int dfs(){
	memset(ans,0x3f,sizeof(ans));
	deque<PII> q;
	q.push_front({sx,sy});
	ans[sx][sy]=0;
	while(q.size()){
		PII u=q.front();q.pop_front();
		int x=u.first,y=u.second;
		if(x==ex&&y==ey){
			
			return ans[x][y];
		}
			for(int i=0;i<4;i++){
				int xx=x+dx[i],yy=y+dy[i];
				if(xx<1||xx>n||yy<1||yy>m) continue;
				if(ans[xx][yy]<=ans[x][y]||g[xx][yy]=='#') continue;
				
				ans[xx][yy]=ans[x][y];q.push_front({xx,yy});
			}
			for(int i=-2;i<=2;i++){
				for(int j=-2;j<=2;j++){
					int xx=x+i,yy=y+j;
					if(xx<1||xx>n||yy<1||yy>m) continue;
				if(ans[xx][yy]<=ans[x][y]+1||g[xx][yy]=='#') continue;
				ans[xx][yy]=ans[x][y]+1;
				q.push_back({xx,yy});
				}
			}
	}

	return -1;
}
int main(){ 
	cin>>n>>m;
	cin>>sx>>sy;
	cin>>ex>>ey;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>g[i][j];
			
		}
	}
	cout<<dfs()<<endl;
	return 0;
	} 
2025/7/22 10:14
加载中...