fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. bool isSafe(int i,int j,vector<vector<int>>& grid){
  5. return i>=0 && j>=0 && i<grid.size() && j<grid[i].size() && grid[i][j]==1;
  6. }
  7.  
  8. void solve(vector<vector<int>> &grid, queue<pair<int,int>> &q,int m, int n, int tm){
  9. int dx[4]={-1,1,0,0};
  10. int dy[4]={0,0,1,-1};
  11. for(int i=0;i<tm;i++){
  12. int k = q.size();
  13. for(int ii=0;ii<k;ii++){
  14. int x = q.front().first;
  15. int y = q.front().second;
  16. q.push({x,y});
  17. q.pop();
  18. for(int iii=0;iii<4;iii++){
  19. if(isSafe(x+dx[iii],y+dy[iii],grid)){
  20. grid[x+dx[iii]][y+dy[iii]] = 2;
  21. q.push({x+dx[iii], y+dy[iii]});
  22. }
  23. }
  24. }
  25. }
  26. }
  27.  
  28. int main() {
  29. int m,n,t;
  30. cin >> m >> n >> t;
  31. vector<vector<int>> v(m,vector<int>(n,0));
  32. queue<pair<int,int>> q;
  33. for(int i=0;i<m;i++){
  34. for(int j=0;j<n;j++){
  35. int x;
  36. cin >> x;
  37. v[i][j] = x;
  38. if(x==2) q.push({i,j});
  39. }
  40. }
  41. solve(v,q,m,n,t);
  42. int res = 0;
  43. for(int i=0;i<m;i++){
  44. for(int j=0;j<n;j++){
  45. if(v[i][j]==1)res++;
  46. }
  47. }
  48. cout << res;
  49. }
Success #stdin #stdout 0s 5632KB
stdin
3 3 2
1 1 1
0 1 1
0 1 2
stdout
2