abc 079 d 'Wall' (python)
ほかっておいた蟻本の2-5章を進め始めた
蟻本がC+で書かれていても、先人の方々が python のコードをまとめてくださっているので独学でもなんとか耐えている
神サイト
蟻本 初級編 python カテゴリーの記事一覧 - じゅっぴーダイアリー
今回はワーシャルフロイド法の練習
入力をうまくワーシャルフロイド法に当てはめていければ簡単
ワーシャルフロイド法自体は一回だけ使うようにして、全部の最短距離のリストを出しておいて、一つ一つリストから d[Aij][1] を足していかないと TLE する
def warshall_floyd(d): for k in range(10): for i in range(10): for j in range(10): d[i][j] = min(d[i][j],d[i][k] + d[k][j]) return d w,h = map(int,input().split()) d = [[10**4]*10 for i in range(10)] for i in range(10): a = list(map(int,input().split())) for j in range(10): d[i][j] = a[j] for i in range(10): d[i][i] = 0 ans = 0 chk = tuple(warshall_floyd(d)) for _ in range(w): c = list(map(int,input().split())) for i in c: if i != 1 and i != -1: ans += chk[i][1] print(ans)