广搜全红求助

P1746 离开中山路

__ryp__ @ 2023-03-25 22:03:15

#include <iostream>
#include <queue>
using namespace std;

char map[1001][1001];
static int directions[4][2] = { { 0, 1 }, { 0, -1 }, { 1, 0 }, { 1, -1 } };
int n;

int sx, sy;
int ex, ey;

struct node { int x, y, steps; };
static inline bool
bound_check (node p)
{
  return (p.x >= 0 && p.x < n) && (p.y >= 0 && p.y < n);
}

int
bfs (void)
{
  queue<node> q;
  node p, next;

  q.push ({ sx, sy, 0 });
  while (!q.empty ())
    {
      p = q.front ();
      q.pop ();

      if (p.x == ex && p.y == ey)
    return p.steps;

      for (auto dir : directions)
    {
      next.x = dir[0] + p.x;
      next.y = dir[1] + p.y;
      next.steps = p.steps + 1;

      if (bound_check (next) && map[next.x][next.y] == '0')
        {
          map[next.x][next.y] = '#';
          q.push (next);
        }
    }
    }

  return 1;
}

int
main (void)
{
  cin >> n;
  for (int i = 0; i < n; i++)
    scanf ("%s", map[i]);

  cin >> sx >> sy >> ex >> ey;
  sx--, sy--, ex--, ey--;
  cout << bfs () << endl;

  return 0;
}

简明 简单的思路,本地样例过,下了第一个红点测试也过,跑测评就寄 (Too short on line 1. )

求助各位佬、


by __ryp__ @ 2023-03-25 22:10:30

p.s. 并非全部点都是 too short,但是起码第一个是。

编译器 g++ 12.2.1 20230201


by shiruoyu114514 @ 2023-03-25 22:22:44

static int directions[4][2] = { { 0, 1 }, { 0, -1 }, { 1, 0 }, { 1, -1 } };

这一行应该为

static int directions[4][2] = { { 0, 1 }, { 0, -1 }, { 1, 0 }, { -1, 0 } };

by __ryp__ @ 2023-03-25 22:44:02

@shiruoyu ?? 草 谢佬 我刚好在做另个题的时候看到了想起来是不是 directions 写错了

非常感谢!!


by mediocre_ @ 2023-04-05 19:35:31

这码风。。。


|