Submission #4273139
Source Code Expand
#include <iostream>
#include <queue>
using namespace std;
using P = pair<int, int>;
constexpr int MAX_R = 50;
constexpr int MAX_C = 50;
int R, C;
int sy, sx, gy, gx;
char grid[MAX_R][MAX_C + 1];
int count[MAX_R][MAX_C];
//#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 dy[]{-1, 0, 0, +1};
constexpr int dx[]{0, -1, +1, 0};
#endif
// CAUTION!!!
// Call init_count() first!!!
//
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 == gy && p.second == gx) {
return cnt;
}
++cnt;
for (int i{}; i < sizeof(dy) / sizeof(int); ++i) {
int nh = p.first + dy[i];
int nw = p.second + dx[i];
if (nh < 0 || nh >= R ||
nw < 0 || nw >= C ||
::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", &R, &C);
scanf("%d%d", &sy, &sx);
--sy;
--sx;
scanf("%d%d", &gy, &gx);
--gy;
--gx;
for (int r{}; r < R; ++r) {
scanf("%s", &grid[r][0]);
}
printf("%d\n", bfs(sy, sx));
return 0;
}
Submission Info
Submission Time |
|
Task |
C - 幅優先探索 |
User |
tatsu |
Language |
C++14 (Clang 3.8.0) |
Score |
100 |
Code Size |
1545 Byte |
Status |
AC |
Exec Time |
7 ms |
Memory |
888 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 |
7 ms |
888 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 |