Submission #3807281
Source Code Expand
#include <iostream>
#include <queue>
using namespace std;
#define MIN(x, y) ((x) < (y) ? (x) : (y))
#define MAX(x, y) ((x) > (y) ? (x) : (y))
#define DIVUP(x, y) (((x) + ((y) - 1)) / (y))
#define DIVOFF(x, y) (((x) + ((y) / 2)) / (y))
#define REMAINDER(x, y) ((x) % (y))
#define MAX_R 50
#define MAX_C 50
using P = pair<int, int>;
char maze[MAX_R][MAX_C+1];
int cnt[MAX_R][MAX_C];
int R, C, sy, sx, gy, gx;
int dy[]{-1, 0, 1, 0};
int dx[]{ 0, -1, 0, 1};
int bfs(int r, int c) {
queue<P> que;
cnt[r][c] = 0;
que.push(make_pair(r, c));
while (que.size()) {
P p = que.front(); que.pop();
int count = cnt[p.first][p.second];
if (p.first == gy && p.second == gx) return count;
++count;
for (int i{}; i < 4; ++i) {
int nr = p.first + dy[i];
int nc = p.second + dx[i];
if (nr < 0 || nr >= R || nc < 0 || nc >= C ||
cnt[nr][nc] >= 0 || maze[nr][nc] == '#')
continue;
cnt[nr][nc] = count;
que.push(make_pair(nr, nc));
}
}
return -1;
}
int main() {
scanf("%d%d", &R, &C);
scanf("%d%d", &sy, &sx);
scanf("%d%d", &gy, &gx);
--sy; --sx; --gy; --gx;
for (int r{}; r < R; ++r) {
for (int c{}; c < C; ++c) {
cnt[r][c] = -1;
}
scanf("%s", maze[r]);
}
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 |
1371 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 |