Submission #3765022


Source Code Expand

#include <cstdio>
#include <deque>

#define INF 3

using namespace std;

struct point {
    int x;
    int y;
};

struct point operator + (const point& p, const point& q) {
    point result;
    result.x = p.x+q.x; result.y = p.y+q.y;
    return result;
}
bool operator == (const point& p, const point& q) {
    return p.x == q.x && p.y == q.y;
}
bool operator < (const point& p, const point& q) {
    return p.x < q.x || p.y < q.y;
}

int main () {
    point p, g, pn;
    int H, W, i, j;
    point next[4] = {{1,0},{0,1},{-1,0},{0,-1}};
    scanf("%d %d",&H,&W);
    p.x = -1; g.y = -1;
    int d[H][W];
    char map[H][W+1];
    for (i=0; i<H; i++) {
        scanf("%s",map[i]);
        for (j=0; j<W; j++) {
            d[i][j] = INF;
            if (map[i][j] == 's') 
                p = point{i,j};
            else if (map[i][j] == 'g')
                g = point{i,j};
        }
    }
    deque<point> Q;
    map[p.x][p.y] = 'x';
    d[p.x][p.y] = 0;
    Q.push_back(p);
    while (Q.size() != 0) {
        p = Q.front(); Q.pop_front();
        for (i=0; i<4; i++) {
            pn = p + next[i];
            if (pn < point{0,0} || point{H-1,W-1} < pn) continue;
            if (pn == g) {
                printf("YES\n");
                return 0;
            } else if (map[pn.x][pn.y] == '.') {
                map[pn.x][pn.y] = 'x';
                d[pn.x][pn.y] = d[p.x][p.y];
                Q.push_front(pn);
            } else if (map[pn.x][pn.y] == '#' && d[p.x][p.y] < 2) {
                map[pn.x][pn.y] = 'x';
                d[pn.x][pn.y] = d[p.x][p.y] + 1;
                Q.push_back(pn);
            }
        }
    }
    printf("NO\n");
    return 0;
}

Submission Info

Submission Time
Task A - 大好き高橋君
User shugo256
Language C++14 (GCC 5.4.1)
Score 0
Code Size 1745 Byte
Status RE
Exec Time 97 ms
Memory 256 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:29:25: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d",&H,&W);
                         ^
./Main.cpp:34:27: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
         scanf("%s",map[i]);
                           ^

Judge Result

Set Name All
Score / Max Score 0 / 100
Status
WA × 27
RE × 4
Set Name Test Cases
All 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 00_sample_04.txt, 00_sample_05.txt, 01_rnd_00.txt, 01_rnd_01.txt, 01_rnd_02.txt, 01_rnd_03.txt, 01_rnd_04.txt, 01_rnd_05.txt, 01_rnd_06.txt, 01_rnd_07.txt, 01_rnd_08.txt, 01_rnd_09.txt, 01_rnd_10.txt, 01_rnd_11.txt, 01_rnd_12.txt, 01_rnd_13.txt, 01_rnd_14.txt, 01_rnd_15.txt, 01_rnd_16.txt, 01_rnd_17.txt, 01_rnd_18.txt, 01_rnd_19.txt, 02_max_00.txt, 02_max_01.txt, 02_max_02.txt, 03_max2_00.txt, 03_max2_01.txt, 03_max2_02.txt
Case Name Status Exec Time Memory
00_sample_01.txt WA 1 ms 256 KB
00_sample_02.txt WA 1 ms 256 KB
00_sample_03.txt WA 1 ms 256 KB
00_sample_04.txt RE 97 ms 256 KB
00_sample_05.txt WA 1 ms 256 KB
01_rnd_00.txt WA 1 ms 256 KB
01_rnd_01.txt WA 1 ms 256 KB
01_rnd_02.txt WA 1 ms 256 KB
01_rnd_03.txt WA 1 ms 256 KB
01_rnd_04.txt WA 1 ms 256 KB
01_rnd_05.txt WA 1 ms 256 KB
01_rnd_06.txt WA 1 ms 256 KB
01_rnd_07.txt WA 1 ms 256 KB
01_rnd_08.txt WA 1 ms 256 KB
01_rnd_09.txt WA 1 ms 256 KB
01_rnd_10.txt WA 1 ms 256 KB
01_rnd_11.txt WA 1 ms 256 KB
01_rnd_12.txt WA 1 ms 256 KB
01_rnd_13.txt WA 1 ms 256 KB
01_rnd_14.txt WA 1 ms 256 KB
01_rnd_15.txt WA 1 ms 256 KB
01_rnd_16.txt WA 1 ms 256 KB
01_rnd_17.txt WA 1 ms 256 KB
01_rnd_18.txt WA 1 ms 256 KB
01_rnd_19.txt WA 1 ms 256 KB
02_max_00.txt WA 1 ms 256 KB
02_max_01.txt WA 1 ms 256 KB
02_max_02.txt WA 1 ms 256 KB
03_max2_00.txt RE 97 ms 256 KB
03_max2_01.txt RE 96 ms 256 KB
03_max2_02.txt RE 96 ms 256 KB