bfs 70分求调 (4个点TLE)
查看原帖
bfs 70分求调 (4个点TLE)
725397
zhangchengyi356535楼主2023/4/1 11:04
#include <bits/stdc++.h>
using namespace std;
int n,m,x,y;
char mapp[1010][1010];
struct nod{
	int x,y,z;
};
queue<nod>q;
int ans,vis[1010][1010];
int dx[4]={1,0,0,-1};
int dy[4]={0,1,-1,0};
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>mapp[i][j];
		}
	}
	for(int i=1;i<=m;i++){
		ans=1;
		cin>>x>>y;
		nod begin;
		begin.z=mapp[x][y]-'0';
		begin.x=x;
		begin.y=y;
		vis[x][y]=1;
		q.push(begin);
		while(q.empty()==0){
			nod now=q.front();
			q.pop();
			for(int i=0;i<4;i++){
				nod nxt;
				nxt.x=now.x+dx[i];
				nxt.y=now.y+dy[i];
				nxt.z=mapp[nxt.x][nxt.y]-'0';
				if(now.z!=nxt.z&&nxt.x>=1&&nxt.x<=n&&nxt.y>=1&&nxt.y<=n&&vis[nxt.x][nxt.y]==0){
					q.push(nxt);
					vis[nxt.x][nxt.y]=1;
					ans++;
				}
			}
		}
		cout<<ans<<endl;
		while(q.empty()==0){
			q.pop();
		}
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				vis[i][j]=0;
			}
		}
	}
	return 0;
}
2023/4/1 11:04
加载中...