結果
問題 | No.2805 Go to School |
ユーザー |
|
提出日時 | 2024-07-13 19:50:59 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 859 ms / 2,000 ms |
コード長 | 1,150 bytes |
コンパイル時間 | 204 ms |
コンパイル使用メモリ | 82,128 KB |
実行使用メモリ | 126,624 KB |
最終ジャッジ日時 | 2024-07-16 01:42:48 |
合計ジャッジ時間 | 15,285 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 35 |
ソースコード
N, M, L, S, E = map(int, input().split())E = S+EG = [[] for _ in range(N)]for i in range(M):a, b, t = map(int, input().split())a -= 1b -= 1G[a].append((b, t))G[b].append((a, t))T = list(map(int, input().split()))T = [x-1 for x in T]from heapq import heapify, heappop, heappushdef dijk(G, start=0):N = len(G)dist = [10**18]*Nvisited = [False]*Nque = []dist[start] = 0heappush(que, (0, start))while que:_, now = heappop(que)if visited[now] == True:continuevisited[now] = Truefor to, weight in G[now]:if dist[now] + weight < dist[to]:dist[to] = dist[now] + weightheappush(que, (dist[now] + weight, to))return diststt = 0dist1 = dijk(G, stt)Tok = []for toilet in T:if dist1[toilet] < E:tim = max(dist1[toilet], S)Tok.append((toilet, tim))if len(Tok) == 0:print(-1)exit()dist2 = dijk(G, N-1)ans = 10**18for toilet, t1 in Tok:ttot = t1 + 1 + dist2[toilet]ans = min(ans, ttot)if ans == 10**18:print(-1)else:print(ans)