結果
問題 | No.1607 Kth Maximum Card |
ユーザー |
![]() |
提出日時 | 2022-01-23 14:57:59 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 2,219 ms / 3,500 ms |
コード長 | 1,214 bytes |
コンパイル時間 | 308 ms |
コンパイル使用メモリ | 82,404 KB |
実行使用メモリ | 147,964 KB |
最終ジャッジ日時 | 2024-11-29 15:18:27 |
合計ジャッジ時間 | 22,622 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 33 |
ソースコード
import sysimport io, osinput = io.BytesIO(os.read(0,os.fstat(0).st_size)).readlinefrom collections import dequeINF = 10**18def main():n, m, k = map(int, input().split())edge = [[] for i in range(n)]for i in range(m):u, v, c = map(int, input().split())u, v = u-1, v-1edge[u].append((c, v))edge[v].append((c, u))def bfs(s, edge, x):q = deque([])q.append(0)dist = [INF]*ndist[0] = 0while q:v = q.popleft()if v == n-1:return dist[n-1]for w, nv in edge[v]:if w > x:c = 1else:c = 0if dist[v]+c < dist[nv]:dist[nv] = dist[v]+cif c == 0:q.appendleft(nv)else:q.append(nv)def is_ok(x):d = bfs(0, edge, x)return d < kng = -1ok = 2*10**5+50while ng+1 < ok:mid = (ng+ok)//2if is_ok(mid):ok = midelse:ng = midprint(ok)if __name__ == '__main__':main()