Submission #70803624


Source Code Expand

import sys
from collections import deque

input = sys.stdin.readline

def solve():
    H, W = map(int, input().split())
    S = [input().strip() for _ in range(H)]

    inf = 10**18
    dist = [[[inf] * 4 for _ in range(W)] for _ in range(H)]
    
    q = deque()    
    dr = [0, 1, 0, -1]#0:右, 1:下, 2:左, 3:上
    dc = [1, 0, -1, 0]
    mirror_map = {'A': 0, 'B': 1, 'C': 2}


    transform = [
        [0, 1, 2, 3], 
        [1, 0, 3, 2],  
        [3, 2, 1, 0]  
    ]
    
    dir_enter = 0 
    i, j = 0, 0
    
    S_act = mirror_map[S[i][j]]
    for type_int in range(3):
        cost = 0 if type_int == S_act else 1
        dir_next = transform[type_int][dir_enter]
        
        if cost < dist[i][j][dir_next]:
            dist[i][j][dir_next] = cost
            if cost == 0:
                q.appendleft((i, j, dir_next))
            else:
                q.append((i, j, dir_next))

    while q:
        i, j, dir_next = q.popleft()
        cost = dist[i][j][dir_next]
        
        next_i = i + dr[dir_next]
        next_j = j + dc[dir_next]
        dir_enter = dir_next

        if not (0 <= next_i < H and 0 <= next_j < W):
            continue
            
        S_act = mirror_map[S[next_i][next_j]]
        for type_int in range(3):
            op_cost = 0 if type_int == S_act else 1
            new_total_cost = cost + op_cost
            
            dir_next_new = transform[type_int][dir_enter]
            
            if new_total_cost < dist[next_i][next_j][dir_next_new]:
                dist[next_i][next_j][dir_next_new] = new_total_cost
                if op_cost == 0:
                    q.appendleft((next_i, next_j, dir_next_new))
                else:
                    q.append((next_i, next_j, dir_next_new))


    ans = dist[H-1][W-1][0] 
    return ans if ans != inf else -1

T = int(input())
ans = []
for _ in range(T):
    ans.append(solve())

for _ in range(T):
    print(ans[_])

Submission Info

Submission Time
Task E - Reflection on Grid
User exophia
Language Python (PyPy 3.11-v7.3.20)
Score 500
Code Size 2012 Byte
Status AC
Exec Time 357 ms
Memory 191584 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 500 / 500
Status
AC × 1
AC × 36
Set Name Test Cases
Sample 00_sample_00.txt
All 00_sample_00.txt, 01_test_00.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt, 01_test_22.txt, 01_test_23.txt, 01_test_24.txt, 01_test_25.txt, 01_test_26.txt, 01_test_27.txt, 01_test_28.txt, 01_test_29.txt, 01_test_30.txt, 01_test_31.txt, 01_test_32.txt, 01_test_33.txt, 01_test_34.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 77 ms 100344 KiB
01_test_00.txt AC 281 ms 115916 KiB
01_test_01.txt AC 267 ms 111536 KiB
01_test_02.txt AC 268 ms 111552 KiB
01_test_03.txt AC 244 ms 110908 KiB
01_test_04.txt AC 295 ms 111972 KiB
01_test_05.txt AC 253 ms 112332 KiB
01_test_06.txt AC 231 ms 116408 KiB
01_test_07.txt AC 258 ms 126436 KiB
01_test_08.txt AC 147 ms 132616 KiB
01_test_09.txt AC 210 ms 154468 KiB
01_test_10.txt AC 201 ms 133984 KiB
01_test_11.txt AC 259 ms 145052 KiB
01_test_12.txt AC 215 ms 135264 KiB
01_test_13.txt AC 241 ms 142248 KiB
01_test_14.txt AC 246 ms 135460 KiB
01_test_15.txt AC 248 ms 137140 KiB
01_test_16.txt AC 287 ms 148052 KiB
01_test_17.txt AC 289 ms 148916 KiB
01_test_18.txt AC 345 ms 183728 KiB
01_test_19.txt AC 344 ms 180024 KiB
01_test_20.txt AC 177 ms 169156 KiB
01_test_21.txt AC 138 ms 132708 KiB
01_test_22.txt AC 227 ms 178208 KiB
01_test_23.txt AC 196 ms 154548 KiB
01_test_24.txt AC 196 ms 133900 KiB
01_test_25.txt AC 226 ms 145288 KiB
01_test_26.txt AC 190 ms 133824 KiB
01_test_27.txt AC 206 ms 135780 KiB
01_test_28.txt AC 356 ms 190340 KiB
01_test_29.txt AC 204 ms 133212 KiB
01_test_30.txt AC 237 ms 133348 KiB
01_test_31.txt AC 268 ms 191584 KiB
01_test_32.txt AC 268 ms 191428 KiB
01_test_33.txt AC 357 ms 190636 KiB
01_test_34.txt AC 350 ms 190700 KiB