OD1821 冰河世纪-小拨鼠de坚果1

#include<bits/stdc++.h>
#define int long long
using namespace std;
int m,n,cnt=0;
char a[55][55];
int dx[5]={0,1,0,-1,0};
int dy[5]={0,0,1,0,-1},sx,sy;
bool vis[55][55];
void dfs(int x,int y){
	if((x>n)||(y>m)||(x<1)||(y<1))return;
	if(a[x][y]=='#')return;
	if(vis[x][y])return;
	cnt++;
	vis[x][y]=true;
	for(int i = 1;i <= 4;i++){
		int X=x+dx[i];
		int Y=y+dy[i];
		dfs(X,Y);
	}
}
signed main(){
	cin >> m >> n;
	for(int i = 1;i <= n;i++){
		for(int j = 1;j <= m;j++){
			cin >> a[i][j];
			if(a[i][j]=='@'){
				sx=i;
				sy=j;
			}
		}
	}
	dfs(sx,sy);
	cout << cnt;
	return 0;
}