problem
solution
codes
#include<iostream> #include<queue> using namespace std; struct xyz{ int x, y; xyz(int x = 0, int y = 0):x(x),y(y){}; }; int n, m, ans; char a[2010][2010]; const int dx[] = {0,0,-1,1}; const int dy[] = {-1,1,0,0}; void bfs(int x, int y){ queue<xyz>q; q.push(xyz(x,y)); a[x][y] = '#'; while(!q.empty()){ xyz t = q.front(); q.pop(); for(int i = 0; i < 4; i++){ int newx = t.x+dx[i], newy = t.y+dy[i]; if(newx>=0 && newx<n && newy>=0 && newy<m && a[newx][newy]=='.'){ q.push(xyz(newx, newy)); a[newx][newy] = '#'; } } } } int main(){ cin>>n>>m; //cin.get(); for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) cin>>a[i][j]; for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) if(a[i][j] == '.'){ bfs(i,j); ans++;} cout<<ans<<"\n"; return 0; }