【求助】下载测试数据本地能过,上交全WA
查看原帖
【求助】下载测试数据本地能过,上交全WA
393852
C83_AD楼主2024/11/28 15:04

如题。

不止一次遇见类似的问题,O2开了又关也没有。这是为什么?

#include<cstdio>
using namespace std;
#define MX 503
const int dx[]={0,0,1,-1},dy[]={1,-1,0,0};
bool mp[503][503]={true};
int n,m,num_0;
int x,y,nx,ny;//position of each step and its next step
int	t=1,que[250003]={0};//queue, form like:[h,t)  key:x*MX+y
int main(){
	//intput
	scanf("%d %d\n",&n,&m),num_0=(n+2)*(m+2);
	for(int i=1;i<=n;++i){
		for(int j=1;j<=m;++j) if(getchar()=='*') mp[i][j]=true,--num_0;
		getchar();
	}
	++n,++m;
	//BFS
	for(int h=0;h<t;++h){
		x=que[h]/MX,y=que[h]%MX;
//		printf("<%d~%d>:%d->%d,%d\n",h,t,que[h],x,y);
		for(int i=0;i<4;++i){
			nx=x+dx[i],ny=y+dy[i];
//			printf("  <%d,%d>\n",nx,ny);
			if(nx<0||ny<0||nx>n||ny>m||mp[nx][ny]) continue;
//			printf("  in\n");
			que[t++]=nx*MX+ny,mp[nx][ny]=true;
		}
	}
	//output
	printf("%d",num_0-t);
	return 0;
} 
2024/11/28 15:04
加载中...