結果
問題 |
No.1607 Kth Maximum Card
|
ユーザー |
|
提出日時 | 2021-12-11 00:22:06 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,095 bytes |
コンパイル時間 | 213 ms |
コンパイル使用メモリ | 82,560 KB |
実行使用メモリ | 280,264 KB |
最終ジャッジ日時 | 2024-07-18 20:58:42 |
合計ジャッジ時間 | 6,461 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 5 TLE * 1 -- * 27 |
ソースコード
N,M,K = map(int,input().split()) board = [] for _ in range(M): u,v,c = map(int,input().split()) u-=1 v-=1 board.append((u,v,c)) from heapq import heappush,heappop #edge[a].append((b,cost)) def dijekstra(st,dis,edge): q = [] dis[st] = 0 q.append((0,st)) while q: t,now = heappop(q) if t > dis[now]: continue for next,cost in edge[now]: if dis[next] > cost + dis[now]: dis[next] = cost + dis[now] heappush(q,(dis[next],next)) def is_ok(x): edge = [[] for _ in range(N)] for i in range(M): u,v,c = board[i] if c > x: edge[u].append((v,1)) edge[v].append((u,1)) else: edge[u].append((v,0)) edge[v].append((u,0)) INF = float('inf') dis = [INF for _ in range(N)] dijekstra(0,dis,edge) if dis[N-1] <= K -1: return True else: return False ok = 2 * 10 ** 5 ng = -1 while ok - ng > 1: x = (ng+ok)//2 if is_ok(x): ok = x else: ng = x print(ok)