Unverified Commit 16d6a088 authored by Angel_Kitty's avatar Angel_Kitty Committed by GitHub
Browse files

【0-1 BFS】移除不必要的逻辑

【0-1 BFS】移除不必要的逻辑
parents a9832701 2a3d1c13
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -168,14 +168,15 @@ while (队列不为空) {
```cpp
#include <bits/stdc++.h>
using namespace std;

#define INF (1 << 29)
int n, m;
char grid[1001][1001];
int dist[1001][1001][4];
int vis[1001][1001][4];
int fx[] = {1, -1, 0, 0};
int fy[] = {0, 0, 1, -1};
deque<int> q;

void add_front(int x, int y, int dir, int d) {
  if (d < dist[x][y][dir]) {
    dist[x][y][dir] = d;
@@ -184,6 +185,7 @@ void add_front(int x, int y, int dir, int d) {
    q.push_front(x);
  }
}

void add_back(int x, int y, int dir, int d) {
  if (d < dist[x][y][dir]) {
    dist[x][y][dir] = d;
@@ -192,6 +194,7 @@ void add_back(int x, int y, int dir, int d) {
    q.push_back(dir);
  }
}

int main() {
  cin >> n >> m;
  for (int i = 0; i < n; i++) cin >> grid[i];
@@ -207,8 +210,6 @@ int main() {
    q.pop_front();
    q.pop_front();
    q.pop_front();
    if (vis[x][y][dir]) continue;
    vis[x][y][dir] = true;
    int d = dist[x][y][dir];
    int nx = x + fx[dir], ny = y + fy[dir];
    if (nx >= 0 && nx < n && ny >= 0 && ny < m) add_front(nx, ny, dir, d);