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 |
|
|
| 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 |