結果
問題 | No.340 雪の足跡 |
ユーザー |
![]() |
提出日時 | 2020-09-23 01:52:20 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 450 ms / 1,000 ms |
コード長 | 1,418 bytes |
コンパイル時間 | 326 ms |
コンパイル使用メモリ | 82,204 KB |
実行使用メモリ | 125,168 KB |
最終ジャッジ日時 | 2024-06-27 02:50:10 |
合計ジャッジ時間 | 10,032 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 32 |
ソースコード
import sysread=sys.stdin.buffer.readreadline=sys.stdin.buffer.readlinereadlines=sys.stdin.buffer.readlinesw, h, n=map(int, readline().split())s1=[[0]*w for i in range(h)]s2=[[0]*h for i in range(w)]for i in range(n):m=int(readline())b=list(map(int, readline().split()))for j in range(m):x1, y1=divmod(b[j], w)x2, y2=divmod(b[j+1], w)if x1==x2:if y1>y2:y1, y2=y2, y1s1[x1][y1]+=1s1[x1][y2]-=1else:if x1>x2:x1, x2=x2, x1s2[y1][x1]+=1s2[y1][x2]-=1import itertoolsfor i in range(h):s1[i]=list(itertools.accumulate(s1[i]))for i in range(w):s2[i]=list(itertools.accumulate(s2[i]))INF=10**9d=[[INF]*w for i in range(h)]d[0][0]=0from collections import dequeque=deque()que.append(0)while que:p=que.popleft()x, y=divmod(p, w)d0=d[x][y]if x-1>=0 and s2[y][x-1]>0 and d[x-1][y]>d0+1:d[x-1][y]=d0+1que.append((x-1)*w+y)if x+1<h and s2[y][x]>0 and d[x+1][y]>d0+1:d[x+1][y]=d0+1que.append((x+1)*w+y)if y-1>=0 and s1[x][y-1]>0 and d[x][y-1]>d0+1:d[x][y-1]=d0+1que.append(x*w+y-1)if y+1<w and s1[x][y]>0 and d[x][y+1]>d0+1:d[x][y+1]=d0+1que.append(x*w+y+1)if d[h-1][w-1]==INF:print("Odekakedekinai..")else:print(d[h-1][w-1])