#include<bits/stdc++.h>
using namespace std;
int fx[] = {0 , -1 , 0 , 1 , 0};
int fy[] = {0 , 0 , 1 , 0 , -1};
bool dp[1000][1000];
char mp[1000][1000];
int xx , x , y , dx , dy , yy , sum = 1;
int bfs(int x1 , int y1)
{
for(int i = 1; i <= 4; i++)
{
dy = y1 + fx[i];
dx = x1 + fy[i];
if(dp[dy][dx] == 0 && mp[dy][dx] == '.' && dy <= x && dy > 0 && dx <= y && dx > 0)
{
dp[dy][dx] = 1;
sum++;
bfs(dx,dy);
}
}
}
int main(){
cin >> y >> x;
for(int i = 1; i <= x; i++)
{
for(int j = 1; j <= y; j++)
{
cin >> mp[i][j];
if(mp[i][j] == '@')
{
xx = j;
yy = i;
}
}
}
dp[yy][xx] = 1;
bfs(xx , yy);
cout << sum << endl;
return 0;
}
我就不明白为什么超时