求助
查看原帖
求助
273934
ellq15106416118楼主2021/7/19 20:56
#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
long long n,m,t,x,y,p;
char ch;
int a[1010][1010],b[1010][1010],dx[4]={-1,0,0,1},dy[4]={0,-1,1,0};
bool c[1010][1010];
queue <pair<int,int> >q;
int main(){
	cin>>n>>m>>t;
	for(int i=1;i<=n;i++)
	  for(int j=1;j<=m;j++){
	  	cin>>ch;
	  	a[i][j]=ch-'0';
	  }
	for(int i=1;i<=n;i++)
	  for(int j=1;j<=m;j++)
	    for(int k=0;k<=3;k++){
	    	int xx=i+dx[k],yy=j+dy[k];
	    	if(xx<1||xx>n||yy<1||yy>m) continue;
	    	if(a[xx][yy]==a[i][j]) c[i][j]=1;
	    }
	for(int i=1;i<=n;i++)
	  for(int j=1;j<=m;j++)
	    if(c[i][j]){
	    	q.push(make_pair(i,j));
	    }
	bool f=0;
	if(q.empty()) f=1;
	while(!q.empty()){
		int x=q.front().first,y=q.front().second;
		for(int i=0;i<=3;i++){
			int xx=x+dx[i],yy=y+dy[i];
			if(xx<1||xx>n||yy<1||yy>m) continue;
			if(c[xx][yy]) continue;
			b[xx][yy]=b[x][y]+1;
			c[xx][yy]=1;
			q.push(make_pair(xx,yy));
		}
	}
	for(int i=1;i<=t;i++){
		long long x,y,p;
		cin>>x>>y>>p;
		if(f==1){cout<<a[x][y]<<endl;continue;
		}
		if(p<b[x][y]){cout<<a[x][y]<<endl;continue;
		}
		p=p-b[x][y];
		cout<<(b[x][y]+p)%2<<endl;
	}
}
2021/7/19 20:56
加载中...