# CFR Educational 1 D. Igor In the Museum ( Easy BFS )

Problem - D - Codeforces
Simply simulating will be alright.

```#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e3 + 3;
const int MAXM = 1e3 + 3;
const int MAXK = 1e6 + 6;

const int dx[] = { 0, 1, 0, -1 };
const int dy[] = { 1, 0, -1, 0 };

int n, m, k;
char G[ MAXN ][ MAXM ];

int cc[ MAXN ][ MAXM ], cc_cnt;
int ans[ MAXN * MAXM ];

void bfs(int sx, int sy){
queue<int> que;
que.push( sx * MAXM + sy );
cc[ sx ][ sy ] = cc_cnt;
while( !que.empty() ){
int x = que.front() / MAXM;
int y = que.front() % MAXM;
que.pop();
for(int d = 0; d < 4; ++d){
int nx = x + dx[ d ];
int ny = y + dy[ d ];
if( nx < 0 || ny < 0 || nx >= n || ny >= m ) continue;
if( G[ nx ][ ny ] == '.' ){
if( cc[ nx ][ ny ] ) continue;
cc[ nx ][ ny ] = cc_cnt;
que.push( nx * MAXM + ny );
}
if( G[ nx ][ ny ] == '*' )
++ans[ cc_cnt ];
}
}
}

void solve(){
for(int i = 0; i < n; ++i)
for(int j = 0; j < m; ++j)
if( G[ i ][ j ] == '.' && !cc[ i ][ j ] ){
++cc_cnt;
bfs( i, j );
}
while( k-- ){
int x, y; scanf("%d%d", &x, &y);
printf("%d\n", ans[ cc[ --x ][ --y ] ]);
}
}

int main(){
scanf("%d%d%d", &n, &m, &k);
for(int i = 0; i < n; ++i)
scanf("%s", G[ i ]);
solve();
return 0;
}
```