Submission #1961863


Source Code Expand

#include <stdlib.h>
#include <stdio.h>
#include <math.h>

#define rep(n, i) for(int i = 0; i < n; i++)
#define MAX(a, b) ((a) > (b) ? (a) : (b))
#define MIN(a, b) ((a) < (b) ? (a) : (b))

void find_way(char** map, int** way, int nx, int ny, int gx, int gy, int R, int C){
    if (nx == gx && ny == gy) return way[gy][gx];
    if (nx+1 <= C-1) {
        if (map[ny][nx+1] != '#'){
            if (way[ny][nx+1] < 0 || way[ny][nx+1] > way[ny][nx] + 1) {
                way[ny][nx+1] = way[ny][nx] + 1;
                find_way(map, way, nx+1, ny, gx, gy, R, C);
            }
        }

    }
    if (ny+1 <= R-1) {
        if (map[ny+1][nx] != '#'){
            if (way[ny+1][nx] < 0 || way[ny+1][nx] > way[ny][nx] + 1) {
                way[ny+1][nx] = way[ny][nx] + 1;
                find_way(map, way, nx, ny+1, gx, gy, R, C);
            }
        }
    }
    if (nx-1 >= 0) {
        if (map[ny][nx-1] != '#'){
            if (way[ny][nx-1] < 0 || way[ny][nx-1] > way[ny][nx] + 1) {
                way[ny][nx-1] = way[ny][nx] + 1;
                find_way(map, way, nx-1, ny, gx, gy, R, C);
            }
        }
    }
    if (ny-1 >= 0) {
        if (map[ny-1][nx] != '#'){
            if (way[ny-1][nx] < 0 || way[ny-1][nx] > way[ny][nx] + 1) {
                way[ny-1][nx] = way[ny][nx] + 1;
                find_way(map, way, nx, ny-1, gx, gy, R, C);
            }
        }
    }
}

void solve(void){
    int R, C, sy, sx, gy, gx;
    scanf("%d %d\n", &R, &C);
    scanf("%d %d\n", &sy, &sx);
    scanf("%d %d\n", &gy, &gx);
    char **map = (char **)malloc(sizeof(char *) * R);
    rep(R, i){
        map[i] = (char *)malloc(sizeof(char) * (C+1));
        scanf("%s", map[i]);
    }
    int** way = (int **)malloc(sizeof(int *) * R);
    rep(R, i) {
        way[i] = (int *)malloc(sizeof(int) * C);
        rep(C, j) way[i][j] = -1;
    }
    way[sy-1][sx-1] = 0;
    find_way(map, way, sx-1, sy-1, gx-1, gy-1, R, C);

  printf("%d\n", way[gy-1][gx-1]);
}

int main(void){
  solve();
  return 0;
}

Submission Info

Submission Time
Task C - 幅優先探索
User sifi_border
Language C (GCC 5.4.1)
Score 100
Code Size 2084 Byte
Status AC
Exec Time 10 ms
Memory 512 KB

Compile Error

./Main.c: In function ‘find_way’:
./Main.c:10:38: warning: ‘return’ with a value, in function returning void
     if (nx == gx && ny == gy) return way[gy][gx];
                                      ^
./Main.c: In function ‘solve’:
./Main.c:48:5: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d\n", &R, &C);
     ^
./Main.c:49:5: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d\n", &sy, &sx);
     ^
./Main.c:50:5: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d\n", &gy, &gx);
     ^
./Main.c:54:9: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
         scanf("%s", map[i]);
         ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 3
AC × 25
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 10 ms 512 KB
subtask1_01.txt AC 1 ms 256 KB
subtask1_02.txt AC 1 ms 256 KB
subtask1_03.txt AC 1 ms 128 KB
subtask1_04.txt AC 10 ms 512 KB
subtask1_05.txt AC 9 ms 512 KB
subtask1_06.txt AC 2 ms 256 KB
subtask1_07.txt AC 1 ms 128 KB
subtask1_08.txt AC 1 ms 128 KB
subtask1_09.txt AC 1 ms 256 KB
subtask1_10.txt AC 1 ms 256 KB
subtask1_11.txt AC 10 ms 512 KB
subtask1_12.txt AC 9 ms 512 KB
subtask1_13.txt AC 1 ms 256 KB
subtask1_14.txt AC 1 ms 128 KB
subtask1_15.txt AC 2 ms 256 KB
subtask1_16.txt AC 3 ms 256 KB
subtask1_17.txt AC 7 ms 384 KB
subtask1_18.txt AC 6 ms 256 KB
subtask1_19.txt AC 1 ms 256 KB
subtask1_20.txt AC 1 ms 256 KB
subtask1_21.txt AC 2 ms 256 KB
subtask1_22.txt AC 1 ms 256 KB