超时三个点
  • 板块P1141 01迷宫
  • 楼主menkeming
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/26 11:45
  • 上次更新2023/11/26 14:12:25
查看原帖
超时三个点
1008290
menkeming楼主2023/11/26 11:45
#include<bits/stdc++.h>

using namespace std;
struct node{
	int x,y;
};
int n,m,vis[1010][1010];
char mapp[1010][1010];
int dx[4]={0,1,0,-1};
int dy[4]={-1,0,1,0};
queue<node>q;
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			cin>>mapp[i][j];
	for(int i=0;i<m;i++){
		memset(vis,0,sizeof(vis));
		node st,now,nxt;
		int ans=1;
		cin>>st.x>>st.y;
		q.push(st);
		vis[st.x][st.y]=1;
		while(!q.empty()){
			now=q.front();
			q.pop();
			for(int j=0;j<4;j++){
				nxt.x=now.x+dx[j];
				nxt.y=now.y+dy[j];
				if(nxt.x>0&&nxt.y>0&&nxt.x<=n&&nxt.y<=n&&
					vis[nxt.x][nxt.y]==0&&
					((mapp[now.x][now.y]=='0'&&mapp[nxt.x][nxt.y]=='1')
					||(mapp[now.x][now.y]=='1'&&mapp[nxt.x][nxt.y]=='0'))){
					vis[nxt.x][nxt.y]=1;
					q.push(nxt);
					ans++;
				}
			}
			if(ans==n*n) break;
		}
		cout<<ans<<'\n';
	}
}
2023/11/26 11:45
加载中...