#include<iostream>
#include<string>
#include<cstring>
#include<queue>
using namespace std;
int n,m,v[25][25];
string f[25];
queue<int>M;
int main() {
while(cin>>n>>m&&n!=0&&m!=0) {
for(int i=0; i<25; i++)
memset(v[i],0,sizeof(v[i]));
int p,q;
for(int i=0; i<m; i++) {
cin>>f[i];
for(int j=0; j<n; j++) {
if(f[i][j]=='@') {
p=i;
q=j;
}
}
}
v[p][q]=1;
M.push(p);
M.push(q);
int sum=0;
while(!M.empty()) {
int x=M.front();
M.pop();
int y=M.front();
M.pop();
sum++;
if(x-1>=0 && f[x-1][y]!='#' && !v[x-1][y]) {
M.push(x-1);
M.push(y);
v[x-1][y]=1;
}
if(x+1<m && f[x+1][y]!='#' && !v[x+1][y]) {
M.push(x+1);
M.push(y);
v[x+1][y]=1;
}
if(y-1>=0 && f[x][y-1]!='#' && !v[x][y-1]) {
M.push(x);
M.push(y-1);
v[x][y-1]=1;
}
if(y+1<n && f[x][y+1]!='#' && !v[x][y+1]) {
M.push(x);
M.push(y+1);
v[x][y+1]=1;
}
}
cout<<sum<<endl;
}
return 0;
}
HDU 1312 广度优先搜索(BFS)
最新推荐文章于 2022-01-12 23:41:22 发布