MLE求助
  • 板块P1141 01迷宫
  • 楼主greenhb
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/12/28 18:04
  • 上次更新2023/10/28 13:26:40
查看原帖
MLE求助
573285
greenhb楼主2021/12/28 18:04
#include <bits/stdc++.h>
using namespace std;
int n,m;
int x,y,ans=0;
int a[10005][10005],vis[10005][10005];
queue<int> qx,qy,num;
void bfs(){
	qx.push(x);
	qy.push(y);
	num.push(a[x][y]);
	while(!qx.empty() && !qy.empty() && !num.empty()){
		int i=qx.front();
		int j=qy.front();
		int u=num.front();
		if(a[i][j+1]!=u && j+1<=n && vis[i][j+1]==0){
			vis[i][j+1]=1;
			ans++;
			qx.push(i);
			qy.push(j+1);
			num.push(a[i][j+1]);
		}
		if(a[i][j-1]!=u && j-1>=1 && vis[i][j-1]==0){
			vis[i][j-1]=1;
			ans++;
			qx.push(i);
			qy.push(j-1);
			num.push(a[i][j-1]);
		}
		if(a[i+1][j]!=u && i+1<=n && vis[i+1][j]==0){
			vis[i+1][j]=1;
			ans++;
			qx.push(i+1);
			qy.push(j);
			num.push(a[i+1][j+1]);
		}
		if(a[i-1][j]!=u && i-1>=1 && vis[i-1][j]==0){
			vis[i-1][j]=1;
			ans++;
			qx.push(i-1);
			qy.push(j);
			num.push(a[i-1][j]);
		}
		qx.pop();
		qy.pop();
		num.pop();
	}
	return;
}
int main(){
	scanf("%d %d",&n,&m);
	memset(a,-1,sizeof(a));
	for(int i=1; i<=n; i++){
		for(int j=1; j<=n; j++){
			scanf("%1d",&a[i][j]);
		}
	}
	while(m--){
		memset(vis,0,sizeof(vis));
		ans=0;
		scanf("%d %d",&x,&y);
		bfs();
		printf("%d\n",ans);
	}
	return 0;
}

这个代码全部MLE了,请求犇犇指导qwq

2021/12/28 18:04
加载中...