#include<iostream>
#include<cstring>
using namespace std;
const int N=5050;
int res[100000],f[N][N];//答案和标记
char ch[N][N];
int n,m;
void dfs(int r,int c,int z,int l)
{
if(r<0||c<0||r>=n||c>=n||f[r][c]!=-1||ch[r][c]-'0'!=z) return ;
f[r][c]=l;//
res[l]++;
dfs(r-1,c,!z,l);
dfs(r+1,c,!z,l);
dfs(r,c-1,!z,l);
dfs(r,c+1,!z,l);
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
cin>>ch[i][j];
memset(f,-1,sizeof(f));
for(int i=0;i<m;i++)
{
int a,b;
cin>>a>>b;
a--;
b--;
if(f[a][b]==-1) dfs(a,b,ch[a][b]-'0',i);
else res[i]=res[f[a][b]];
}
for(int i=0;i<m;i++) cout<<res[i]<<endl;
return 0;
}
/*
确实可以用dfs,但如果每一次输入都来一次dfs,那必定超时
所以考虑把每一个点的答案都记录下来,如果没被记录就来一次dfs,可以就直接用
*/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具