早华寅的峡谷旅行
样
例
样例
样例
3 3
#.#
...
##.
2
2 2
3 3
4
4
1 < = n < = 1000 ; 1 < = m < = 1000 ; 1 < = q < = 100000 1 <= n <= 1000; 1 <= m <= 1000; 1 <= q <= 100000 1<=n<=1000;1<=m<=1000;1<=q<=100000
#include<cstdio>
int a[1001][1001],b[1000001];
char g[1001][1001];
int n,m;
void dfs(int x,int y,int t)
{
a[x][y]=t;
b[t]++;
if(x>0&&a[x-1][y]==0) dfs(x-1,y,t);
if(x<n-1&&a[x+1][y]==0) dfs(x+1,y,t);
if(y>0&&a[x][y-1]==0) dfs(x,y-1,t);
if(y<m-1&&a[x][y+1]==0) dfs(x,y+1,t);
}
int main()
{
int i,j,t=2;
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
{
scanf("%s",g[i]);
for(j=0;j<m;j++)
if(g[i][j]=='#')
a[i][j]=1;
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(a[i][j]==0)
{
dfs(i,j,t);
t++;
}
}
}
int dx,dy,tt;
scanf("%d",&tt);
while(tt--)
{
scanf("%d%d",&dx,&dy);
if(b[a[dx-1][dy-1]]==0) printf("-1\n");
else printf("%d\n",b[a[dx-1][dy-1]]);
}
return 0;
}