結果
問題 | No.2712 Play more! |
ユーザー |
|
提出日時 | 2024-04-11 13:37:47 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 391 ms / 2,000 ms |
コード長 | 1,395 bytes |
コンパイル時間 | 238 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 79,360 KB |
最終ジャッジ日時 | 2024-10-02 21:35:30 |
合計ジャッジ時間 | 6,405 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 33 |
ソースコード
import typingimport sysfrom collections import deque, defaultdictinput = lambda: sys.stdin.readline().strip()inf = 10**18mod = 998244353def BellmanFord(N, s, Edges):dist = [inf for _ in range(N)]dist[s] = 0# N-1回緩めるfor _ in range(N-1):changed = Falsefor v_from, v_to, c in Edges:if dist[v_from] == inf:continueif dist[v_from]+c < dist[v_to]:dist[v_to] = dist[v_from]+cchanged = Trueif not changed:return distfor _ in range(N-1):changed = Falsefor v_from, v_to, c in Edges:# 非連結の場合はあり得るif dist[v_from] == inf:continue# -inf + c が -inf以外の何よりも小さいようなinfの値を選択するif dist[v_from]+c < dist[v_to]:dist[v_to] = -infchanged = Trueif not changed:return distreturn distdef solve():N, M = map(int, input().split())A = list(map(int, input().split()))Edges = [] # (v_from, v_to, cost)for _ in range(M):a, b, c = map(int, input().split())# v_fromを攻略して移動し,v_toへと到達する時間Edges.append((a-1, b-1, c-A[a-1]))dist = BellmanFord(N, 0, Edges)if dist[-1] == -inf:print('inf')return# Nを攻略する時間を足すprint(-dist[-1]+A[-1])def main():t = 1for _ in range(t):solve()main()