#3#10#11#1 TLE,大佬帮忙看看
  • 板块P1141 01迷宫
  • 楼主Be_myself
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/14 11:29
  • 上次更新2024/3/14 16:53:38
查看原帖
#3#10#11#1 TLE,大佬帮忙看看
865056
Be_myself楼主2024/3/14 11:29
#include<bits/stdc++.h>
using namespace std;
int n,m,cnt;
int a[1001][1001];
int b[100001][2];
int vis[1001][1001];
int dx[]={1,-1,0,0};
int dy[]={0,0,1,-1};
typedef pair<int,int> PII;
queue<PII> q;
void BFS(int x,int y){
	cnt=1;
	vis[x][y]=1;
	q.push({x,y});
	while(!q.empty()){
		auto cur=q.front();
		q.pop();
		for(int i=0;i<4;i++){
			int x1=cur.first+dx[i];
			int y1=cur.second+dy[i];
			if(x1>n||x1<1||y1<1||y1>n)continue;
			else if(vis[x1][y1]!=-1)continue;
			else if(a[x1][y1]==a[cur.first][cur.second])continue;
			q.push({x1,y1});
			vis[x1][y1]=vis[cur.first][cur.second]+1;
			cnt++;
		}
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			char x;
			cin>>x;
			a[i][j]=x-'0';
		}
	}
	for(int i=1;i<=m;i++){
		cin>>b[i][0]>>b[i][1];
		memset(vis,-1,sizeof(vis));
		BFS(b[i][0],b[i][1]);
		cout<<cnt<<endl;
	}
	return 0;
} 
2024/3/14 11:29
加载中...