fork download
  1. #include <iostream>
  2.  
  3. int i, j, k, A[1004004], B[1004004], N, M;
  4.  
  5. void print() {
  6. std::cout << "______A______" << '\n';
  7. for (int i=0; i<=N+1; i++) {
  8. for (int j=0; j<=M+1; j++)
  9. std::cout << A[i*(M+2)+j] << " ";
  10. std::cout << '\n';
  11. }
  12. std::cout << "______B______" << '\n';
  13. for (int i=0; i<=N+1; i++) {
  14. for (int j=0; j<=M+1; j++)
  15. std::cout << B[i*(M+2)+j] << " ";
  16. std::cout << '\n';
  17. }
  18. std::cout << '\n';
  19.  
  20. }
  21.  
  22. void F(int x, int y) {
  23. B[x*M+y] = 1;
  24. --k;
  25. if (A[(x-1)*(M+2)+y] == 4 && B[(x-1)*(M+2)+y] == 0) F(x-1, y);
  26. if (A[(x+1)*(M+2)+y] == 2 && B[(x+1)*(M+2)+y] == 0) F(x+1, y);
  27. if (A[x*(M+2)+y-1] == 1 && B[x*(M+2)+y-1] == 0) F(x, y-1);
  28. if (A[x*(M+2)+y+1] == 3 && B[x*(M+2)+y+1] == 0) F(x, y+1);
  29. }
  30.  
  31. int main() {
  32. std::cin >> N >> M;
  33. k = N*M;
  34. for (i=0; i<1004004; ++i)
  35. A[i] = B[i] = 0;
  36.  
  37. print();
  38.  
  39. for (i=1; i<=N; ++i)
  40. for (j=1; j<=M; ++j)
  41. std::cin >> A[i*M+j];
  42.  
  43. print();
  44.  
  45. if (A[(M+2)+1] == 2 || A[(M+2)+1] == 3) F(1, 1);
  46.  
  47. print();
  48.  
  49. if (A[(M+2)+M] == 1 || A[(M+2)+M] == 2) F(1, M);
  50.  
  51. print();
  52.  
  53. if (A[N*(M+2)+M] == 1 || A[N*(M+2)+M] == 4) F(N, M);
  54.  
  55. print();
  56.  
  57. if (A[N*(M+2)+1] == 3 || A[N*(M+2)+1] == 4) F(N, 1);
  58.  
  59. print();
  60.  
  61. for (i=2; i<M; ++i)
  62. if (A[(M+2)+i] == 2) F(1, i);
  63. for (i=2; i<M; ++i)
  64. if (A[N*(M+2)+i] == 4) F(N, i);
  65. for (i=2; i<N; ++i)
  66. if (A[i*(M+2)+1] == 3) F(i, 1);
  67. for (i=2; i<N; ++i)
  68. if (A[i*(M+2)+M] == 1) F(i, M);
  69. std::cout << k;
  70. return 0;
  71. }
Success #stdin #stdout 0.01s 11432KB
stdin
2 2
1 2
3 4
stdout
______A______
0 0 0 0 
0 0 0 0 
0 0 0 0 
0 0 0 0 
______B______
0 0 0 0 
0 0 0 0 
0 0 0 0 
0 0 0 0 

______A______
0 0 0 1 
2 3 4 0 
0 0 0 0 
0 0 0 0 
______B______
0 0 0 0 
0 0 0 0 
0 0 0 0 
0 0 0 0 

______A______
0 0 0 1 
2 3 4 0 
0 0 0 0 
0 0 0 0 
______B______
0 0 0 1 
0 0 0 0 
0 0 0 0 
0 0 0 0 

______A______
0 0 0 1 
2 3 4 0 
0 0 0 0 
0 0 0 0 
______B______
0 0 0 1 
0 0 0 0 
0 0 0 0 
0 0 0 0 

______A______
0 0 0 1 
2 3 4 0 
0 0 0 0 
0 0 0 0 
______B______
0 0 0 1 
0 0 0 0 
0 0 0 0 
0 0 0 0 

______A______
0 0 0 1 
2 3 4 0 
0 0 0 0 
0 0 0 0 
______B______
0 0 0 1 
0 0 0 0 
0 0 0 0 
0 0 0 0 

3