1312 RED AND BLACK
阿新 • • 發佈:2018-12-21
#include<bits/stdc++.h> using namespace std; int n,m; int ans; int visit[200][200]; int dx[]= {-1,1,0,0}; int dy[]= {0,0,-1,1}; char maps[200][200]; struct s { int x,y;//定義結構體減少冗餘 }; void bfs(int x,int y) { s a,b; queue<s>Q; a.x=x; a.y=y; Q.push(a);//吃進佇列 visit[x][y]=1; while(!Q.empty()) { a=Q.front(); Q.pop(); for(int i=0; i<4; i++) { b.x=a.x+dx[i]; b.y=a.y+dy[i]; if(b.x>=1&&b.x<=n&&b.y>=1&&b.y<=m&&!visit[b.x][b.y]&&maps[b.x][b.y]=='.') { visit[b.x][b.y]=1; Q.push(b); //cout<<b.x<<" "<<b.y<<endl; ++ans; } } } } int main() { while(cin>>m>>n&&m) { ans=0; int bx,by; memset(visit,0,sizeof(visit)); for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) { cin>>maps[i][j]; if(maps[i][j]=='@') { bx=i,by=j; } } } for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) { if(maps[i][j]=='@') { bx=i,by=j; break; } } } bfs(bx,by); cout<<ans+1<<endl;//注意自身 } return 0; }