Submission #2965440
Source Code Expand
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct _queue {
int x, y;
struct _queue *next;
} queue;
queue *que;
queue *last;
queue* new(int x, int y) {
queue *_que;
_que = (queue*)malloc(sizeof(queue));
_que->x = x;
_que->y = y;
_que->next = NULL;
return _que;
}
void push(int x, int y) {
queue *new_queue = new(x, y);
if (que == NULL) {
que = new_queue;
last = new_queue;
} else {
last->next = new_queue;
last = new_queue;
}
}
void pop(int *rx, int *ry) {
*rx = que->x;
*ry = que->y;
queue *old = que;
que = que->next;
free(old);
if (que == NULL) last = NULL;
}
int main() {
char mp[64][64];
int ret[64][64];
int dir[4][2] = {{-1,0}, {1,0}, {0,-1}, {0,1}};
int r, c, sy, sx, gy, gx;
scanf("%d%d%d%d%d%d", &r, &c, &sy, &sx, &gy, &gx);
for (int i = 0; i < r; i++) scanf("%s", mp + i);
for (int i = 0; i < r; i++) for (int j = 0; j < c; j++) ret[i][j] = -1;
ret[sy-1][sx-1] = 0;
que = new(sx, sy);
last = que;
while (que != NULL) {
int x, y;
pop(&x, &y);
for (int i = 0; i < 4; i++) {
int nx = x + dir[i][0], ny = y + dir[i][1];
if (nx > 0 && nx <= c && ny > 0 && ny <= r && mp[ny-1][nx-1] == '.' && ret[ny-1][nx-1] == -1) {
ret[ny-1][nx-1] = ret[y-1][x-1] + 1;
push(nx, ny);
}
}
}
printf("%d\n", ret[gy-1][gx-1]);
return 0;
}
Submission Info
Submission Time
2018-08-06 22:47:27+0900
Task
C - 幅優先探索
User
touyou
Language
C (GCC 5.4.1)
Score
100
Code Size
1580 Byte
Status
AC
Exec Time
2 ms
Memory
128 KB
Compile Error
./Main.c: In function ‘main’:
./Main.c:48:39: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[64]’ [-Wformat=]
for (int i = 0; i < r; i++) scanf("%s", mp + i);
^
./Main.c:47:5: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d%d%d%d%d", &r, &c, &sy, &sx, &gy, &gx);
^
./Main.c:48:33: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
for (int i = 0; i < r; i++) scanf("%s", mp + i);
^
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
128 KB
subtask0_sample02.txt
AC
1 ms
128 KB
subtask0_sample03.txt
AC
1 ms
128 KB
subtask1_01.txt
AC
1 ms
128 KB
subtask1_02.txt
AC
1 ms
128 KB
subtask1_03.txt
AC
1 ms
128 KB
subtask1_04.txt
AC
1 ms
128 KB
subtask1_05.txt
AC
1 ms
128 KB
subtask1_06.txt
AC
1 ms
128 KB
subtask1_07.txt
AC
2 ms
128 KB
subtask1_08.txt
AC
1 ms
128 KB
subtask1_09.txt
AC
1 ms
128 KB
subtask1_10.txt
AC
1 ms
128 KB
subtask1_11.txt
AC
1 ms
128 KB
subtask1_12.txt
AC
1 ms
128 KB
subtask1_13.txt
AC
1 ms
128 KB
subtask1_14.txt
AC
1 ms
128 KB
subtask1_15.txt
AC
1 ms
128 KB
subtask1_16.txt
AC
1 ms
128 KB
subtask1_17.txt
AC
1 ms
128 KB
subtask1_18.txt
AC
1 ms
128 KB
subtask1_19.txt
AC
1 ms
128 KB
subtask1_20.txt
AC
1 ms
128 KB
subtask1_21.txt
AC
1 ms
128 KB
subtask1_22.txt
AC
1 ms
128 KB