結果
問題 | No.614 壊れたキャンパス |
ユーザー |
![]() |
提出日時 | 2019-12-20 14:48:18 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,073 ms / 2,000 ms |
コード長 | 1,321 bytes |
コンパイル時間 | 674 ms |
コンパイル使用メモリ | 82,688 KB |
実行使用メモリ | 287,888 KB |
最終ジャッジ日時 | 2024-07-08 09:46:46 |
合計ジャッジ時間 | 12,760 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 20 |
ソースコード
import sysinput = sys.stdin.readlinefrom collections import defaultdictfrom heapq import *def dijkstra(s, t):dist = [10**18]*cdist[s] = 0pq = []heappush(pq, (dist[s], s))while pq:d, v = heappop(pq)if dist[v]<d:continuefor nv, w in adj_list[v]:if dist[nv]>dist[v]+w:dist[nv] = dist[v]+wheappush(pq, (dist[nv], nv))return dist[t]N, M, K, S, T = map(int, input().split())node = [set() for _ in range(N)]node[0].add(S)node[-1].add(T)abc = [tuple(map(int, input().split())) for _ in range(M)]for ai, bi, ci in abc:node[ai-1].add(bi)node[ai].add(ci)serial = defaultdict(dict)c = 0for i in range(N):l = list(node[i])l.sort()for j in range(len(l)):serial[i][l[j]] = cc += 1adj_list = [[] for _ in range(c)]for i in range(N):l = list(serial[i].items())for j in range(len(l)-1):ps, s = l[j]pt, t = l[j+1]adj_list[s].append((t, pt-ps))adj_list[t].append((s, pt-ps))for ai, bi, ci in abc:s = serial[ai-1][bi]t = serial[ai][ci]adj_list[s].append((t, 0))ans = dijkstra(serial[0][S], serial[N-1][T])if ans==10**18:print(-1)else:print(ans)