TLE90求助
  • 板块P1141 01迷宫
  • 楼主_Liyx_
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/7/10 11:45
  • 上次更新2024/7/10 13:50:58
查看原帖
TLE90求助
1041884
_Liyx_楼主2024/7/10 11:45

写的BFS,已经优化不了了,有没有大佬帮我看看

#include <bits/stdc++.h>
using namespace std;
int n,m;
string mp[1005];
bool vis[1005][1005];
int x,y;
int ans;
int dx[5]={1,0,-1,0},dy[5]={0,1,0,-1};
struct node{
	int x,y;
};
int aa[100005];
int bb[1005][1005];
void bfs(int id){
	memset(vis,0,sizeof(vis));
	ans=1;
	queue<node> q;
	q.push((node){x,y});
	vis[x][y]=1;
	while(!q.empty()){
		node now=q.front();
		q.pop();
		for(int i=0;i<4;i++){
			int xx=now.x+dx[i],yy=now.y+dy[i];
			if(xx>=0&&xx<n&&yy>=0&&yy<n&&vis[xx][yy]==0&&(mp[xx][yy]-'0'+mp[now.x][now.y]-'0')==1){
				vis[xx][yy]=1;
				q.push((node){xx,yy});
				bb[xx][yy]=id;
				ans++;
			}
		}
	}
}
int main(){
	cin>>n>>m;
	for(int i=0;i<n;i++){
		cin>>mp[i];
	}
	for(int i=1;i<=m;i++){
		cin>>x>>y;
		x--;
		y--;
		if(bb[x][y]!=0){
			cout<<aa[bb[x][y]]<<"\n";
			continue;
		}
		bfs(i);
		aa[i]=ans;
		cout<<ans<<"\n";
	}
	return 0;
}
2024/7/10 11:45
加载中...