fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main(){
  4. int H,W; cin>>H>>W;
  5. vector<string> S(H); for(int i=0;i<H;i++) cin>>S[i];
  6. int dx[]={1,-1,0,0}, dy[]={0,0,1, -1};
  7. bool ch=1;
  8. while(ch){
  9. ch=0;
  10. vector<pair<int,int>> T;
  11. for(int i=0;i<H;i++)
  12. for(int j=0;j<W;j++)
  13. if(S[i][j]=='.'){
  14. int c=0;
  15. for(int k=0;k<4;k++){
  16. int ni=i+dx[k], nj=j+dy[k];
  17. if(ni>=0&&ni<H&&nj>=0&&nj<W&&S[ni][nj]=='#') c++;
  18. }
  19. if(c==1) T.push_back({i,j});
  20. }
  21. if(!T.empty()) ch=1;
  22. for(auto [i,j]:T) S[i][j]='#';
  23. }
  24. int ans=0; for(auto &r:S) for(char c:r) ans+=c=='#';
  25. cout<<ans;
  26. }
Success #stdin #stdout 0.01s 5288KB
stdin
10 10
..........
....#.....
#.......#.
......#...
.......#..
.....#....
..........
..........
..#...#...
.......#..
stdout
64