提出 #61394747


ソースコード 拡げる

from bisect import bisect_left, bisect_right, insort_left, insort_right
from collections import defaultdict, Counter, deque
from functools import reduce, lru_cache
from itertools import product, accumulate, groupby, combinations
import sys
import os
def rI(): return int(sys.stdin.readline().rstrip())
def rLI(): return list(map(int,sys.stdin.readline().rstrip().split()))
def rI1(): return (int(sys.stdin.readline().rstrip())-1)
def rLI1(): return list(map(lambda a:int(a)-1,sys.stdin.readline().rstrip().split()))
def rS(): return sys.stdin.readline().rstrip()
def rLS(): return list(sys.stdin.readline().rstrip().split())
IS_LOCAL = int(os.getenv("ATCODER", "0"))==0
err = (lambda *args, **kwargs: print(*args, **kwargs, file=sys.stderr)) if IS_LOCAL else (lambda *args, **kwargs: None)

dy = [-1, 0, 1, 0]
dx = [0, 1, 0, -1]
dr = [-1, 1]

def out_of_bounds(y, x, h, w):
    return y < 0 or y >= h or x < 0 or x >= w

def main():
    H, W = rLI()
    S = G = (-1,-1)
    
    grid = [[] for _ in range(H)]
    
    for i in range(H):
        s = list(rS())
        grid[i] = s
        for j,c in enumerate(s):
            if c == "S":
                S = (i,j)
            if c == "G":
                G = (i,j)
    si,sj = S
    gi,gj = G
    # err(S,G)
    q = deque()
    dist = [[-1 for _ in range(W)] for _ in range(H)]
    visited = [[False] * W for _ in range(H)]
    dist[si][sj] = 0
    visited[si][sj] = True
    for di in range(4):
        ny, nx = si + dy[di], sj + dx[di]
        if dy[di] == 0:
            r = "H"
        else:
            r = "V"
        if not out_of_bounds(ny, nx, H, W) and grid[ny][nx] in ".G":
            q.append((ny, nx, 1, r))
            dist[ny][nx] = 1
            visited[ny][nx] = True
    # err(q)
    while q:
        y, x, d, br = q.popleft()
        # err("--",y, x, d, br)
        for di in range(2):
            if br == "H":
                ny, nx = y + dr[di], x
                r = "V"
            if br == "V":
                ny, nx = y, x + dr[di]
                r = "H"
            if not out_of_bounds(ny, nx, H, W) and grid[ny][nx] in ".G":
                # err(r, ny,nx,H,grid[ny][nx],dist[ny][nx],visited[ny][nx])
                if dist[ny][nx]==-1: 
                    # err(f"dist[{ny}][{nx}] = {d + 1}")
                    dist[ny][nx] = d + 1
                elif dist[ny][nx]>(d+1):
                    # err(f"dist[{ny}][{nx}] = {d + 1}")
                    dist[ny][nx] = d + 1
                else:
                    continue
                item0 = (ny+1, nx+1, d + 1, r)
                # err(item0)
                item = (ny, nx, d + 1, r)
                q.append(item)
                visited[ny][nx] = True

    print(dist[gi][gj])
    
if __name__ == '__main__':
    main()

提出情報

提出日時
問題 D - Snaky Walk
ユーザ comet725
言語 Python (PyPy 3.10-v7.3.12)
得点 0
コード長 2765 Byte
結果 WA
実行時間 309 ms
メモリ 148952 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 0 / 400
結果
AC × 3
AC × 40
WA × 17
セット名 テストケース
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 02_random2_00.txt, 02_random2_01.txt, 02_random2_02.txt, 02_random2_03.txt, 02_random2_04.txt, 02_random2_05.txt, 02_random2_06.txt, 02_random2_07.txt, 02_random2_08.txt, 02_random2_09.txt, 02_random2_10.txt, 02_random2_11.txt, 02_random2_12.txt, 02_random2_13.txt, 02_random2_14.txt, 02_random2_15.txt, 02_random2_16.txt, 02_random2_17.txt, 02_random2_18.txt, 02_random2_19.txt, 03_random3_00.txt, 03_random3_01.txt, 03_random3_02.txt, 03_random3_03.txt, 04_random4_00.txt, 04_random4_01.txt, 04_random4_02.txt, 04_random4_03.txt, 05_handmade_00.txt, 05_handmade_01.txt, 05_handmade_02.txt, 05_handmade_03.txt, 05_handmade_04.txt, 05_handmade_05.txt
ケース名 結果 実行時間 メモリ
00_sample_00.txt AC 79 ms 82396 KiB
00_sample_01.txt AC 79 ms 82220 KiB
00_sample_02.txt AC 79 ms 82208 KiB
01_random_00.txt AC 152 ms 103048 KiB
01_random_01.txt WA 101 ms 84524 KiB
01_random_02.txt AC 114 ms 123468 KiB
01_random_03.txt AC 85 ms 83236 KiB
01_random_04.txt AC 100 ms 102104 KiB
01_random_05.txt AC 83 ms 83268 KiB
01_random_06.txt AC 80 ms 82252 KiB
01_random_07.txt AC 79 ms 82264 KiB
01_random_08.txt AC 118 ms 122508 KiB
01_random_09.txt AC 291 ms 147128 KiB
01_random_10.txt AC 280 ms 148176 KiB
01_random_11.txt WA 254 ms 147760 KiB
01_random_12.txt AC 296 ms 148108 KiB
01_random_13.txt WA 303 ms 148952 KiB
01_random_14.txt AC 291 ms 148084 KiB
01_random_15.txt AC 118 ms 122316 KiB
01_random_16.txt AC 130 ms 122968 KiB
01_random_17.txt AC 126 ms 122644 KiB
01_random_18.txt WA 309 ms 148216 KiB
01_random_19.txt AC 273 ms 146924 KiB
02_random2_00.txt AC 120 ms 122320 KiB
02_random2_01.txt WA 119 ms 122512 KiB
02_random2_02.txt AC 117 ms 122376 KiB
02_random2_03.txt WA 119 ms 122564 KiB
02_random2_04.txt WA 120 ms 122652 KiB
02_random2_05.txt AC 120 ms 122200 KiB
02_random2_06.txt AC 118 ms 122564 KiB
02_random2_07.txt AC 121 ms 122440 KiB
02_random2_08.txt WA 120 ms 122148 KiB
02_random2_09.txt AC 119 ms 122312 KiB
02_random2_10.txt AC 119 ms 122360 KiB
02_random2_11.txt WA 121 ms 122184 KiB
02_random2_12.txt WA 122 ms 122500 KiB
02_random2_13.txt AC 121 ms 122332 KiB
02_random2_14.txt AC 120 ms 122352 KiB
02_random2_15.txt WA 122 ms 122440 KiB
02_random2_16.txt WA 120 ms 122568 KiB
02_random2_17.txt WA 120 ms 122492 KiB
02_random2_18.txt AC 128 ms 122672 KiB
02_random2_19.txt AC 145 ms 139316 KiB
03_random3_00.txt AC 278 ms 143612 KiB
03_random3_01.txt AC 199 ms 140924 KiB
03_random3_02.txt AC 275 ms 143564 KiB
03_random3_03.txt WA 196 ms 140784 KiB
04_random4_00.txt WA 162 ms 140068 KiB
04_random4_01.txt AC 288 ms 145596 KiB
04_random4_02.txt AC 285 ms 146536 KiB
04_random4_03.txt WA 148 ms 139380 KiB
05_handmade_00.txt AC 189 ms 143320 KiB
05_handmade_01.txt AC 253 ms 148852 KiB
05_handmade_02.txt AC 78 ms 82024 KiB
05_handmade_03.txt AC 81 ms 82128 KiB
05_handmade_04.txt AC 90 ms 83360 KiB
05_handmade_05.txt WA 118 ms 122544 KiB