怎么优化啊啊啊
#include <bits/stdc++.h>
using namespace std;
char a[2005][2005];
struct h
{
int x,y;
};
int z[5][5]={{1,0},{-1,0},{0,1},{0,-1}};
queue<h>q;
bool f[2005][2005];
int main()
{
int ans=0;
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
}
}
for(int t=0;t<m;t++)
{
int u,v;
cin>>u>>v;
q.push((h){u,v});
while(!q.empty())
{
h now=q.front();
int ux=now.x,uy=now.y;
q.pop();
if(ux<1 or ux>n or uy<1 or uy>n or f[ux][uy]==1)
{
continue;
}
f[ux][uy]=1;
ans++;
for(int i=0;i<4;i++)
{
if(a[ux+z[i][0]][uy+z[i][1]]!=a[ux][uy])q.push((h){ux+z[i][0],uy+z[i][1]});
}
}
memset(f,0,sizeof(f));
cout<<ans<<endl;
ans=0;
}
return 0;
}
}