Advertisement
Guest User

Untitled

a guest
May 24th, 2016
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.59 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. ifstream in("in.txt");
  7. ofstream out("out.txt");
  8. int n, m, i_begin, j_begin, i_end, j_end;
  9. vector <vector<int>> matrix;
  10.  
  11. void solve(int i, int j, int temp) {
  12.     matrix[i][j] = temp;
  13.     if (matrix[i][j] != -1) {
  14.         if (matrix[i + 1][j + 2] > temp + 1 || matrix[i + 1][j + 2] == 0) solve(i + 1, j + 2, temp + 1);
  15.         if (matrix[i - 1][j + 2] > temp + 1 || matrix[i - 1][j + 2] == 0) solve(i - 1, j + 2, temp + 1);
  16.         if (matrix[i + 1][j - 2] > temp + 1 || matrix[i + 1][j - 2] == 0) solve(i + 1, j - 2, temp + 1);
  17.         if (matrix[i - 1][j - 2] > temp + 1 || matrix[i - 1][j - 2] == 0) solve(i - 1, j - 2, temp + 1);
  18.         if (matrix[i + 2][j + 1] > temp + 1 || matrix[i + 2][j + 1] == 0) solve(i + 2, j + 1, temp + 1);
  19.         if (matrix[i - 2][j + 1] > temp + 1 || matrix[i - 2][j + 1] == 0) solve(i - 2, j + 1, temp + 1);
  20.         if (matrix[i + 2][j - 1] > temp + 1 || matrix[i + 2][j - 1] == 0) solve(i + 2, j - 1, temp + 1);
  21.         if (matrix[i - 2][j - 1] > temp + 1 || matrix[i - 2][j - 1] == 0) solve(i - 2, j - 1, temp + 1);
  22.     }
  23. }
  24.  
  25. int main() {
  26.  
  27.     in >> n;
  28.     in >> m;
  29.     matrix.resize(n + 4, vector <int>(m + 4, -1));
  30.     int n_temp = n + 2, m_temp = m + 2;
  31.     for (size_t i = 2; i < n_temp; i++) {
  32.         for (size_t j = 2; j < m_temp; j++) {
  33.             in >> matrix[i][j];
  34.         }
  35.     }
  36.     in >> i_begin;
  37.     in >> j_begin;
  38.     in >> i_end;
  39.     in >> j_end;
  40.     if (i_begin == i_end && j_begin == j_end) {
  41.         out << "0";
  42.         return 0;
  43.     }
  44.  
  45.     solve(i_begin + 1, j_begin + 1, 0);
  46.     matrix[i_end + 1][j_end + 1] > 0 ? out << matrix[i_end + 1][j_end + 1] : out << "No";
  47.  
  48.     return 0;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement