結果
問題 | No.1607 Kth Maximum Card |
ユーザー |
![]() |
提出日時 | 2021-07-16 21:39:53 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 472 ms / 3,500 ms |
コード長 | 964 bytes |
コンパイル時間 | 1,668 ms |
コンパイル使用メモリ | 177,028 KB |
実行使用メモリ | 16,088 KB |
最終ジャッジ日時 | 2024-07-06 08:38:49 |
合計ジャッジ時間 | 8,457 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 33 |
ソースコード
#include <bits/stdc++.h>using namespace std;int main(){int N, M, K;cin >> N >> M >> K;vector<vector<pair<int, int>>> E(N);for (int i = 0; i < M; i++){int u, v, c;cin >> u >> v >> c;u--;v--;E[u].push_back(make_pair(c, v));E[v].push_back(make_pair(c, u));}int tv = 200000, fv = -1;while (tv - fv > 1){int mid = (tv + fv) / 2;vector<int> d(N, -1);deque<pair<int, int>> dq;dq.push_back(make_pair(0, 0));while (!dq.empty()){int dd = dq.front().first;int v = dq.front().second;dq.pop_front();if (d[v] == -1){d[v] = dd;for (auto P : E[v]){int w = P.second;if (P.first > mid){dq.push_back(make_pair(dd + 1, w));} else {dq.push_front(make_pair(dd, w));}}}}if (d[N - 1] < K){tv = mid;} else {fv = mid;}}cout << tv << endl;}