結果
問題 | No.340 雪の足跡 |
ユーザー |
![]() |
提出日時 | 2025-06-12 14:35:49 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,974 bytes |
コンパイル時間 | 147 ms |
コンパイル使用メモリ | 81,972 KB |
実行使用メモリ | 196,028 KB |
最終ジャッジ日時 | 2025-06-12 14:36:29 |
合計ジャッジ時間 | 10,085 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 12 TLE * 4 -- * 16 |
ソースコード
from collections import deque import sys def main(): input = sys.stdin.read().split() ptr = 0 W = int(input[ptr]) ptr += 1 H = int(input[ptr]) ptr += 1 N = int(input[ptr]) ptr += 1 size = W * H adjacency = [set() for _ in range(size)] for _ in range(N): M_i = int(input[ptr]) ptr += 1 B = list(map(int, input[ptr:ptr + M_i + 1])) ptr += M_i + 1 for j in range(M_i): prev_block = B[j] curr_block = B[j + 1] prev_w = prev_block % W prev_h = prev_block // W curr_w = curr_block % W curr_h = curr_block // W path = [] if prev_h == curr_h: if prev_w <= curr_w: for w in range(prev_w, curr_w + 1): path.append(w + prev_h * W) else: for w in range(prev_w, curr_w - 1, -1): path.append(w + prev_h * W) else: if prev_h <= curr_h: for h in range(prev_h, curr_h + 1): path.append(prev_w + h * W) else: for h in range(prev_h, curr_h - 1, -1): path.append(prev_w + h * W) for i in range(len(path) - 1): a = path[i] b = path[i + 1] adjacency[a].add(b) adjacency[b].add(a) start = 0 end = W * H - 1 distance = [-1] * size distance[start] = 0 queue = deque([start]) while queue: current = queue.popleft() if current == end: print(distance[current]) return for neighbor in adjacency[current]: if distance[neighbor] == -1: distance[neighbor] = distance[current] + 1 queue.append(neighbor) print("Odekakedekinai..") if __name__ == "__main__": main()