Problem p02579 (C++) — buggy submission, verdict: Time Limit Exceeded

/*
  Krishnakant Tiwari
  Problem Link:

 */
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
#pragma GCC optimization("unroll-loops")
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define _cin                                                                   \\
  ios_base::sync_with_stdio(0);                                                \\
  cin.tie(0);
#define endl "\\n"
#define pb push_back
#define rep(i, a, b) for (ll i = a; i < b; ++i)
#define repd(i, a, b) for (ll i = a; i >= b; --i)
#define mp make_pair
#define hell 1000000007
#define vvll vector<vector<ll>>
#define vll vector<ll>
#define mll map<ll, ll>
#define sz(x) (ll) x.size()
#define sll set<ll>
#define pll pair<ll, ll>
#define F first
#define S second
#define eb emplace_back
#define ppb pop_back
#define pf push_front
#define ppf pop_front
#define all(x) x.begin(), x.end()
#define clr(x) memset(x, 0, sizeof(x))
#define sortall(x) sort(all(x))
#define tr(it, a) for (auto it = a.begin(); it != a.end(); it++)
#define PI 3.1415926535897932384626
#define deb(x) cout << #x << "=" << x << endl
#define deb2(x, y) cout << #x << "=" << x << "," << #y << "=" << y << endl
#define precise(x) cout << fixed << setprecision(x)
const ll MAX = 1000004;
const ll INF = 1e18L + 5;
template <typename Arg1> void pn(Arg1 &&arg1) { cout << arg1 << "\\n"; }
template <typename Arg1, typename... Args>
void pn(Arg1 &&arg1, Args &&...args) {
  cout << arg1 << "\\n";
  pn(args...);
}
template <typename Arg1> void ps(Arg1 &&arg1) { cout << arg1 << " "; }
template <typename Arg1, typename... Args>
void ps(Arg1 &&arg1, Args &&...args) {
  cout << arg1 << " ";
  ps(args...);
}
template <typename Arg1> void read(Arg1 &&arg1) { cin >> arg1; }
template <typename Arg1, typename... Args>
void read(Arg1 &&arg1, Args &&...args) {
  cin >> arg1;
  read(args...);
}

void solve() {
  ll h, w;
  read(h, w);
  ll sr, sc, er, ec;
  read(sr, sc);
  read(er, ec);
  sr--, sc--, er--, ec--;
  string mat[h];
  rep(i, 0, h) read(mat[i]);
  ll dis[h][w];
  rep(i, 0, h) rep(j, 0, w) dis[i][j] = INF;
  dis[sr][sc] = 0;
  deque<pll> q;
  q.pb({sr, sc});
  ll dr[] = {1, 0, -1, 0, 1};
  while (!q.empty()) {
    ll cr, cc;
    pll top = q.front();
    cr = top.first, cc = top.second;
    q.pop_front();
    ll tr, tc;
    rep(i, 0, 4) {
      tr = cr + dr[i], tc = cc + dr[i + 1];
      if (tr < h && tr >= 0 && tc < w && tc >= 0 && mat[tr][tc] == '.') {
        if (dis[tr][tc] > dis[cr][cc]) {
          dis[tr][tc] = dis[cr][cc];
          q.push_front({tr, tc});
        }
      }
    }
    rep(i, -2, 3) {
      rep(j, -2, 3) {
        tr = cr + i, tc = cc + j;
        if (tr < h && tr >= 0 && tc < w && tc >= 0 && mat[tr][tc] == '.') {
          if (dis[tr][tc] > dis[cr][cc] + 1) {
            dis[tr][tc] = dis[cr][cc] + 1;
            q.push_back({tr, tc});
          }
        }
      }
    }
  }
  if (dis[er][ec] == INF) {
    pn(-1);
    return;
  }
  pn(dis[er][ec]);
}

int main() {

  _cin
  //     ll tc;
  // cin >> tc;
  // while (tc--)
  // {
  solve();
  // }
}

Error: TLE

Fixed submission:

/*
  Krishnakant Tiwari
  Problem Link:

 */
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
#pragma GCC optimization("unroll-loops")
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define _cin                                                                   \\
  ios_base::sync_with_stdio(0);                                                \\
  cin.tie(0);
#define endl "\\n"
#define pb push_back
#define rep(i, a, b) for (ll i = a; i < b; ++i)
#define repd(i, a, b) for (ll i = a; i >= b; --i)
#define mp make_pair
#define hell 1000000007
#define vvll vector<vector<ll>>
#define vll vector<ll>
#define mll map<ll, ll>
#define sz(x) (ll) x.size()
#define sll set<ll>
#define pll pair<ll, ll>
#define F first
#define S second
#define eb emplace_back
#define ppb pop_back
#define pf push_front
#define ppf pop_front
#define all(x) x.begin(), x.end()
#define clr(x) memset(x, 0, sizeof(x))
#define sortall(x) sort(all(x))
#define tr(it, a) for (auto it = a.begin(); it != a.end(); it++)
#define PI 3.1415926535897932384626
#define deb(x) cout << #x << "=" << x << endl
#define deb2(x, y) cout << #x << "=" << x << "," << #y << "=" << y << endl
#define precise(x) cout << fixed << setprecision(x)
const ll MAX = 1000004;
const ll INF = 1e18L + 5;
template <typename Arg1> void pn(Arg1 &&arg1) { cout << arg1 << "\\n"; }
template <typename Arg1, typename... Args>
void pn(Arg1 &&arg1, Args &&...args) {
  cout << arg1 << "\\n";
  pn(args...);
}
template <typename Arg1> void ps(Arg1 &&arg1) { cout << arg1 << " "; }
template <typename Arg1, typename... Args>
void ps(Arg1 &&arg1, Args &&...args) {
  cout << arg1 << " ";
  ps(args...);
}
template <typename Arg1> void read(Arg1 &&arg1) { cin >> arg1; }
template <typename Arg1, typename... Args>
void read(Arg1 &&arg1, Args &&...args) {
  cin >> arg1;
  read(args...);
}

void solve() {
  ll h, w;
  read(h, w);
  ll sr, sc, er, ec;
  read(sr, sc);
  read(er, ec);
  sr--, sc--, er--, ec--;
  string mat[h];
  rep(i, 0, h) read(mat[i]);
  ll dis[h][w];
  rep(i, 0, h) rep(j, 0, w) dis[i][j] = INF;
  dis[sr][sc] = 0;
  deque<pll> q;
  q.pb({sr, sc});
  ll dr[] = {1, 0, -1, 0, 1};
  while (!q.empty()) {
    ll cr, cc;
    pll top = q.front();
    cr = top.first, cc = top.second;
    q.pop_front();
    ll tr, tc;
    rep(i, 0, 4) {
      tr = cr + dr[i], tc = cc + dr[i + 1];
      if (tr < h && tr >= 0 && tc < w && tc >= 0 && mat[tr][tc] == '.') {
        if (dis[tr][tc] > dis[cr][cc]) {
          dis[tr][tc] = dis[cr][cc];
          q.pb({tr, tc});
        }
      }
    }
    rep(i, -2, 3) {
      rep(j, -2, 3) {
        tr = cr + i, tc = cc + j;
        if (tr < h && tr >= 0 && tc < w && tc >= 0 && mat[tr][tc] == '.') {
          if (dis[tr][tc] > dis[cr][cc] + 1) {
            dis[tr][tc] = dis[cr][cc] + 1;
            q.pb({tr, tc});
          }
        }
      }
    }
  }
  if (dis[er][ec] == INF) {
    pn(-1);
    return;
  }
  pn(dis[er][ec]);
}

int main() {

  _cin
  //     ll tc;
  // cin >> tc;
  // while (tc--)
  // {
  solve();
  // }
}