提交时间:2022-08-01 15:52:00

运行 ID: 56163

#include <bits/stdc++.h> using namespace std; int w,h,a[30][30],x,y,st[30][30],ans; int dx[5]={0,0,1,0,-1},dy[5]={0,1,0,-1,0}; struct node{ int x,y; }; int main(){ while(cin>>w>>h&&w!=0&&h!=0){ ans=0; memset(a,0,sizeof(a)); memset(st,0,sizeof(st)); getchar(); for(int i=1;i<=h;i++){ for(int j=1;j<=w;j++){ char t; t=getchar(); if(t=='.'){ a[i][j]=0; } else if(t=='@'){ a[i][j]=0; x=i,y=j; } else{ a[i][j]=1; } } getchar(); } queue<node> q; q.push((node){x,y}); while(!q.empty()){ node u=q.front(); q.pop(); for(int i=0;i<=4;i++){ int tx=u.x+dx[i],ty=u.y+dy[i]; if(tx>=1&&tx<=h&&ty>=1&&ty<=w&&st[tx][ty]==0&&a[tx][ty]==0){ st[tx][ty]=1; ans++; q.push((node){tx,ty}); } } } cout<<ans<<endl; } return 0; }