洛谷玄学问题
  • 板块灌水区
  • 楼主Berd__
  • 当前回复34
  • 已保存回复34
  • 发布时间2024/7/23 11:44
  • 上次更新2024/7/23 13:16:06
查看原帖
洛谷玄学问题
959419
Berd__楼主2024/7/23 11:44

这道题 测样例是对的,但提交全输出 -1。

#include<bits/stdc++.h>
#define map map2
using namespace std;
char map[11451][11451];
int vis[11451][11451],dx[4]={0,1,0,-1},dy[4]={1,0,-1,0};
int n,m;
struct xy{
	int x;
	int y;
};
int bfs(xy s){
	queue<xy> q;
	vis[s.x][s.y]=0;
	q.push(s);
	while(!q.empty()){
		xy cur=q.front();
		q.pop();
		if(map[cur.x][cur.y]=='D'){
			return vis[cur.x][cur.y];
		}
		for(int i=0;i<4;i++){
			int x=cur.x+dx[i];
			int y=cur.y+dy[i];
			if(x>0&&y>0&&x<=n&&y<=m&&vis[x][y]==0&&(map[x][y]=='#'||map[x][y]=='D')){
				//printf("(%d,%d)\n",x,y);
				vis[x][y]=vis[cur.x][cur.y]+1;
				q.push({x,y});
			}
		} 
	}
	return -1;
}
signed main(){
	xy st,sp;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		getchar();
		for(int j=1;j<=m;j++){
			scanf("%c",&map[i][j]);
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(map[i][j]=='B') st.x=i,st.y=j;
		}
	}
	cout<<bfs(st);
	return 0;
}
2024/7/23 11:44
加载中...