#include<bits/stdc++.h>
using namespace std;
int w,h,ans=1;
char mp[200][200];
bool vis[200][200];
int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
struct node{
int x, y;
};
void bfs(node s){
vis[s.x][s.y]=1;
queue<node> q;
q.push(s);
while(!q.empty()){
node f=q.front();
for(int i=0;i<4;i++){
int t=f.x+dir[i][0];
int g=f.y+dir[i][1];
if(t>=0&&t<h&&g>=0&&g<w&&!vis[t][g]&&mp[t][g]!='#'){
ans++;
vis[t][g]=1;
node l;
l.x=t;
l.y=g;
q.push(l);
}
}
q.pop();
}
}
int main(){
while(cin>>w>>h&&w&&h){
node s;
ans=1;
memset(vis,0,sizeof(vis));
for(int i=0;i<h;i++){
for(int j=0;j<w;j++){
cin>>mp[i][j];
if(mp[i][j]=='@'){
s.x=i;
s.y=j;
}
}
}
bfs(s);
cout<<ans<<endl;
}
return 0;
}
1216:红与黑(BFS)
最新推荐文章于 2022-07-19 12:02:53 发布