結果
問題 | No.2387 Yokan Factory |
ユーザー |
|
提出日時 | 2023-07-22 17:08:04 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 2,315 ms / 5,000 ms |
コード長 | 1,546 bytes |
コンパイル時間 | 249 ms |
コンパイル使用メモリ | 82,028 KB |
実行使用メモリ | 208,608 KB |
最終ジャッジ日時 | 2024-09-22 16:45:54 |
合計ジャッジ時間 | 20,115 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 35 |
ソースコード
import heapqimport sysrr = sys.stdinN,M,X = map(int,rr.readline().split())BB = 0G = [[] for _ in range(N)]for _ in range(M):u,v,a,b = map(int,rr.readline().split())u -= 1v -= 1if BB < b:BB = bG[u].append((b,a,v))G[v].append((b,a,u))for i in range(N):G[i].sort(reverse = True)X = min(X,10 ** 14)inf = 1 << 50B = 47mask = (1 << B) - 1def calc(k):dist = [inf] * Ndist[0] = 0q = [0]while q:"""U = heapq.heappop(q)d = U >> Bnow = U & mask"""if dist[now] > d:continueif now == N - 1:breakfor b,a,v in G[now]:if b < k:breakif dist[v] > d + a:dist[v] = d + aheapq.heappush(q,((d + a) << B) + v)return dist[-1] <= Xend = BB + 1start = 0while end - start > 1:mid = end + start >> 1k = middist = [inf] * Ndist[0] = 0f = [False] * Nq = [(0,0)]while q:"""U = heapq.heappop(q)d = U >> Bnow = U & mask"""d,now = heapq.heappop(q)if f[now]:continuef[now] = Trueif now == N - 1:breakfor b,a,v in G[now]:if b < k:breakif dist[v] > d + a:dist[v] = d + aheapq.heappush(q,(d + a,v))if dist[-1] <= X:start = midelse:end = mid"""if calc(mid):start = midelse:end = mid"""print(start if start != 0 else -1)