fork download
  1. #include<iostream>
  2. //#include<fstream>
  3.  
  4. using namespace std;
  5.  
  6. //ifstream fin("labyrinth.in");
  7.  
  8. const int N_MAX = 2005;
  9. const int M_MAX = 2005;
  10.  
  11. int N, M;
  12.  
  13. unsigned int poz_init_X, poz_init_Y;
  14. unsigned int poz_finala_X, poz_finala_Y;
  15.  
  16. unsigned int matrice[N_MAX][M_MAX];
  17.  
  18. const int di[4] = {-1, 0, 1, 0};
  19.  
  20. const int dj[4] = {0, 1, 0, -1};
  21.  
  22. void Citire()
  23. {
  24. cin >> N >> M;
  25. cin >> poz_init_X >> poz_init_Y;
  26.  
  27. cin >> poz_finala_X >> poz_finala_Y;
  28.  
  29. for(int i = 0; i < N; i++)
  30.  
  31. for(int j = 0; j < M; j++)
  32.  
  33. cin >> matrice[i][j];
  34. }
  35.  
  36. bool check(int i, int j)
  37. {
  38. return i >= 0 && i < N && j >= 0 && j < M;
  39. }
  40.  
  41. void afisare()
  42. {
  43. for(int i = 0; i < N; i++)
  44. {
  45. for(int j = 0; j < M; j++)
  46.  
  47. cout << matrice[i][j] << " ";
  48.  
  49. cout << "\n";
  50. }
  51. cout << "\n\n";
  52. }
  53.  
  54. void solve(int i, int j, int level)
  55. {
  56. for(int k = 0; k < 4; k++)
  57. {
  58.  
  59. int i_vecin = i + di[k];
  60.  
  61. int j_vecin = j + dj[k];
  62.  
  63. if( check(i_vecin, j_vecin) && !matrice[i_vecin][j_vecin] )
  64. {
  65. matrice[i_vecin][j_vecin] = level;
  66.  
  67. if(i_vecin == poz_finala_X && j_vecin == poz_finala_Y) afisare();
  68.  
  69. else
  70. solve(i_vecin, j_vecin, level + 1);
  71.  
  72. matrice[i_vecin][j_vecin] = 0;
  73. }
  74. }
  75.  
  76. }
  77.  
  78. int main()
  79. {
  80. Citire();
  81.  
  82. matrice[poz_init_X][poz_init_Y] = 1;
  83.  
  84. solve(poz_init_X, poz_init_Y, 2);
  85.  
  86. return 0;
  87. }
Success #stdin #stdout 0.01s 5516KB
stdin
5 8
0 0
4 7
0 0 1 1 1 1 0 0
1 0 0 0 0 0 0 1
1 1 0 1 1 1 0 1
7 0 0 0 0 0 0 0
0 0 1 1 1 1 1 0
stdout
1 2 1 1 1 1 0 0 
1 3 4 5 6 7 8 1 
1 1 0 1 1 1 9 1 
7 0 0 0 0 0 10 11 
0 0 1 1 1 1 1 12 


1 2 1 1 1 1 0 0 
1 3 4 0 0 0 0 1 
1 1 5 1 1 1 0 1 
7 0 6 7 8 9 10 11 
0 0 1 1 1 1 1 12