#2,#9,#10 TLE 求助!(BFS)
  • 板块P1141 01迷宫
  • 楼主牧x暗牧
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/5/30 12:51
  • 上次更新2023/11/4 22:30:46
查看原帖
#2,#9,#10 TLE 求助!(BFS)
120866
牧x暗牧楼主2021/5/30 12:51

直接贴代码

#include <bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef pair<int,int> PII;
PII q[1000010];
char a[1010][1010];
bool st[1010][1010];
int n,m,v1,v2;
const int nx[4]={1,-1,0,0};
const int ny[4]={0,0,-1,1};
int bfs(int x,int y){
	int hh=0,tt=0,sum=1;
	q[0]={x,y};
	st[x][y]=true;
	while(hh<=tt){
		PII t=q[hh++];
		for(int i=0;i<4;i++){
			if(a[t.x][t.y]==a[t.x+nx[i]][t.y+ny[i]])continue;
			if(t.x+nx[i]<0||t.x+nx[i]>=n||t.y+ny[i]<0||t.y+ny[i]>=n)continue;
			if(st[t.x+nx[i]][t.y+ny[i]])continue;
			q[++tt]={t.x+nx[i],t.y+ny[i]};
			st[t.x+nx[i]][t.y+ny[i]]=true;
			sum++;
		}
	}
	return sum;
}
int main(){
	cin>>n>>m;
	for(int i=0;i<n;i++)scanf("%s",a[i]);
	for(int k=0;k<m;k++){
		cin>>v1>>v2;
		memset(st,0,sizeof(st));
		cout<<bfs(v1-1,v2-1)<<endl;
	}
	return 0;
}
2021/5/30 12:51
加载中...