結果
| 問題 |
No.1607 Kth Maximum Card
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-03-31 13:59:42 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 2,046 ms / 3,500 ms |
| コード長 | 823 bytes |
| コンパイル時間 | 204 ms |
| コンパイル使用メモリ | 82,112 KB |
| 実行使用メモリ | 142,632 KB |
| 最終ジャッジ日時 | 2024-09-22 18:27:44 |
| 合計ジャッジ時間 | 24,859 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 33 |
ソースコード
import sys
from collections import deque
input = sys.stdin.buffer.readline
N, M, K = map(int, input().split())
G = [[] for _ in range(N)]
for _ in range(M):
u, v, c = map(int, input().split())
u -= 1
v -= 1
G[u].append((v, c))
G[v].append((u, c))
INF = 2 * 10 ** 5 + 1
def is_possible(m: int):
d = deque([0])
dist = [INF] * N
dist[0] = 0
while d:
v = d.pop()
for x, c in G[v]:
dx = dist[v]
if c >= m: dx += 1
if dist[x] <= dx:
continue
dist[x] = dx
if c >= m:
d.appendleft(x)
else:
d.append(x)
return dist[N - 1] < K
l, r = 0, INF
while r - l > 1:
m = (r + l) // 2
if is_possible(m):
r = m
else:
l = m
print(l)