Naxocist

Chessboard

Apr 29th, 2022
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.31 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define INF 1e9
  5.  
  6. using ll = long long;
  7. using pi = pair<int, int>;
  8. using vi = vector<int>;
  9. using pii = pair<int, pi>;
  10.  
  11. const int N = 1005;
  12. char mp[N][N];
  13. bool vis[N][N];
  14. int tr[] = {-2, -1, 1, 2, 2, 1, -1, -2}, tc[] = {1, 2, 2, 1, -1, -2, -2, -1};
  15.  
  16. int main(){
  17.     ios_base::sync_with_stdio(false); cin.tie(nullptr);
  18.    
  19.     int n, m; cin >> n >> m;
  20.  
  21.     for(int i=1; i<=n; ++i){
  22.         for(int j=1; j<=m ;++j){
  23.             cin >> mp[i][j];
  24.  
  25.         }
  26.     }
  27.  
  28.     int sr, sc, dr, dc;
  29.     cin >> sr >> sc >> dr >> dc;
  30.  
  31.     queue<pii> q;
  32.     vis[sr][sc] = 1;
  33.     q.push({0, {sr, sc}});
  34.     while(q.size()){
  35.         pii f = q.front(); q.pop();
  36.         int mv = f.first, r = f.second.first, c = f.second.second;
  37.  
  38.         if(r == dr && c == dc){
  39.             cout << mv;
  40.             return 0;
  41.         }
  42.         for(int i=0; i<8; ++i){
  43.             int h = r + tr[i], k = c + tc[i];
  44.             if(h < 1 || k < 1 || h > n || k > m || vis[h][k] || mp[h][k] == '#') continue;
  45.             vis[h][k] = 1;
  46.             q.push({mv+1, {h, k}});
  47.         }
  48.     }
  49.  
  50.     cout << -1;
  51.  
  52.     return 0;
  53.  
  54. }
  55.  
  56. /*
  57. 4 10
  58. .###......
  59. ##.######.
  60. ##..###.##
  61. ....#..##.
  62. 1 1 4 10
  63. ans = 6
  64.  
  65. 4 10
  66. .###......
  67. ##.######.
  68. ##..######
  69. ....#..##.
  70. 1 1 4 10
  71. ans = -1
  72. */
Advertisement
Add Comment
Please, Sign In to add comment