提交时间:2022-07-29 20:08:49

运行 ID: 55105

#include<bits/stdc++.h> using namespace std; int w,h; struct f{ int i,j; }; int gi[5]={0,1,0,-1,0}; int gj[5]={0,0,1,0,-1}; int main(){ while(1){ int ans=1; cin>>w>>h; if(!w&&!h) break; int m[21][21]={0}; f p; for(int i=1;i<=w;i++){ for(int j=1;j<=h;j++){ char c; cin>>c; if(c=='#') m[i][j]=0; else m[i][j]=1; if(c=='@') p={i,j}; } } queue<f> q; q.push(p); while(!q.empty()){ f z={q.front().i,q.front().j}; q.pop(); for(int i=1;i<=4;i++){ f t={z.i+gi[i],z.j+gj[i]}; if(m[t.i][t.j]){ q.push(t); ans++; m[t.i][t.j]=0; } } } cout<<ans<<endl; } return 0; }