結果
問題 | No.1449 新プロランド |
ユーザー |
![]() |
提出日時 | 2021-03-31 16:03:20 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 1,413 bytes |
コンパイル時間 | 340 ms |
コンパイル使用メモリ | 82,644 KB |
実行使用メモリ | 91,632 KB |
最終ジャッジ日時 | 2024-12-24 01:57:29 |
合計ジャッジ時間 | 6,452 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 25 WA * 1 |
ソースコード
mod = 1000000007eps = 10**-9def main():import sysinput = sys.stdin.readlineimport heapqdef dijkstra(adj, start):# adj: [[to, cost] * vertices], 0th index must be emptyinf = 1 << 60dist = [inf] * len(adj)dist[start] = 0q = []heapq.heappush(q, (0, start))while q:min_dist, v_from = heapq.heappop(q)if min_dist > dist[v_from]:continuev_tos = adj[v_from]for v_to, cost in v_tos:if min_dist + cost < dist[v_to]:dist[v_to] = min_dist + costheapq.heappush(q, (dist[v_to], v_to))return distN, M = map(int, input().split())adj = [[] for _ in range(N * 1001 + 1)]ABC = []for _ in range(M):ABC.append(tuple(map(int, input().split())))T = [0] + list(map(int, input().split()))for a, b, c in ABC:ta = T[a]tb = T[b]for p in range(1001):if 0 < ta + p <= 1000:adj[a + N * p].append((b + N * (p + ta), c // (p + ta) + ta))if 0 < tb + p <= 1000:adj[b + N * p].append((a + N * (p + tb), c // (p + tb) + tb))dist = dijkstra(adj, 1)ans = float("inf")for p in range(1001):ans = min(ans, dist[N + N * p])print(ans)if __name__ == '__main__':main()