Submission #4248693
Source Code Expand
#include <iostream>
#include <queue>
using namespace std;
using P = pair<int, int>;
constexpr int MAX_H = 50;
constexpr int MAX_W = 50;
int H, W;
int sh, sw, gh, gw;
char grid[MAX_H][MAX_W + 1];
int count[MAX_H][MAX_W];
//#define OCTAS
#ifdef OCTAS
constexpr int dh[]{-1, -1, -1, 0, 0, +1, +1, +1};
constexpr int dw[]{-1, 0, +1, -1, +1, -1, 0, +1};
#else
constexpr int dh[]{-1, 0, 0, +1};
constexpr int dw[]{0, -1, +1, 0};
#endif
// CAUTION
// Call init_count()
//
void init_count() {
// この方法で初期化できるのは-1だから
memset(::count, -1, sizeof(::count));
}
int bfs(int y, int x) {
queue<P> que;
::count[y][x] = 0;
que.push(P(y, x));
while (!que.empty()) {
P p = que.front();
que.pop();
int cnt = ::count[p.first][p.second];
if (p.first == gh && p.second == gw) {
return cnt;
}
++cnt;
for (int i{}; i < sizeof(dh) / sizeof(int); ++i) {
int nh = p.first + dh[i];
int nw = p.second + dw[i];
if (nh < 0 || nh >= H ||
nw < 0 || nw >= W ||
::count[nh][nw] >= 0 ||
grid[nh][nw] == '#')
continue;
::count[nh][nw] = cnt;
que.push(P(nh, nw));
}
}
return -1;
}
int main() {
init_count();
scanf("%d%d", &H, &W);
scanf("%d%d", &sh, &sw);
--sh;
--sw;
scanf("%d%d", &gh, &gw);
--gh;
--gw;
for (int h{}; h < H; ++h) {
scanf("%s", &grid[h][0]);
}
printf("%d\n", bfs(sh, sw));
return 0;
}
Submission Info
Submission Time |
|
Task |
C - 幅優先探索 |
User |
tatsu |
Language |
C++14 (Clang 3.8.0) |
Score |
100 |
Code Size |
1529 Byte |
Status |
AC |
Exec Time |
1 ms |
Memory |
256 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
100 / 100 |
Status |
|
|
Set Name |
Test Cases |
Sample |
subtask0_sample01.txt, subtask0_sample02.txt, subtask0_sample03.txt |
All |
subtask0_sample01.txt, subtask0_sample02.txt, subtask0_sample03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt |
Case Name |
Status |
Exec Time |
Memory |
subtask0_sample01.txt |
AC |
1 ms |
256 KB |
subtask0_sample02.txt |
AC |
1 ms |
256 KB |
subtask0_sample03.txt |
AC |
1 ms |
256 KB |
subtask1_01.txt |
AC |
1 ms |
256 KB |
subtask1_02.txt |
AC |
1 ms |
256 KB |
subtask1_03.txt |
AC |
1 ms |
256 KB |
subtask1_04.txt |
AC |
1 ms |
256 KB |
subtask1_05.txt |
AC |
1 ms |
256 KB |
subtask1_06.txt |
AC |
1 ms |
256 KB |
subtask1_07.txt |
AC |
1 ms |
256 KB |
subtask1_08.txt |
AC |
1 ms |
256 KB |
subtask1_09.txt |
AC |
1 ms |
256 KB |
subtask1_10.txt |
AC |
1 ms |
256 KB |
subtask1_11.txt |
AC |
1 ms |
256 KB |
subtask1_12.txt |
AC |
1 ms |
256 KB |
subtask1_13.txt |
AC |
1 ms |
256 KB |
subtask1_14.txt |
AC |
1 ms |
256 KB |
subtask1_15.txt |
AC |
1 ms |
256 KB |
subtask1_16.txt |
AC |
1 ms |
256 KB |
subtask1_17.txt |
AC |
1 ms |
256 KB |
subtask1_18.txt |
AC |
1 ms |
256 KB |
subtask1_19.txt |
AC |
1 ms |
256 KB |
subtask1_20.txt |
AC |
1 ms |
256 KB |
subtask1_21.txt |
AC |
1 ms |
256 KB |
subtask1_22.txt |
AC |
1 ms |
256 KB |