80分TLE求调
  • 板块P1141 01迷宫
  • 楼主yangyi11
  • 当前回复1
  • 已保存回复1
  • 发布时间2025/1/30 10:25
  • 上次更新2025/1/30 21:12:04
查看原帖
80分TLE求调
1127070
yangyi11楼主2025/1/30 10:25
#include<bits/stdc++.h>
using namespace std;
int n,m,e,r;
char a[1005][1005];
int f[1005][1005],b[1005][1005],s=1,dx[4]={1,-1,0,0},dy[4]={0,0,1,-1};
struct movememt{
	int k,l;
};
queue<movememt>p;
void bfs(int x,int y){
	movememt now={x,y};
	f[x][y]=1;
	p.push(now);
	while(!p.empty()){
		movememt now1=p.front();
		p.pop();
		for(int i=0;i<4;i++){
			int xx=now1.k+dx[i],yy=now1.l+dy[i];
			if(xx>0&&xx<=n&&yy>0&&yy<=n&&a[xx][yy]^a[now1.k][now1.l]&&f[xx][yy]==0){
				movememt now2={xx,yy};
				p.push(now2);
				f[xx][yy]=1;
				s++;
			}
		}
	}	
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>a[i][j];
		}
	}
	while(m--){
		scanf("%d%d",&e,&r);
		if(b[e][r]==0){
			bfs(e,r);
			for(int i=1;i<=n;i++){
				for(int j=1;j<=n;j++){
					if(f[i][j]==1){
						b[i][j]=s;
					}
				}
			}
			cout<<s<<'\n';
			s=1;
			memset(f,0,sizeof(f));			
		}else{
			cout<<b[e][r]<<'\n';
		}

	}
	return 0;
} 

2025/1/30 10:25
加载中...