結果
| 問題 |
No.2387 Yokan Factory
|
| コンテスト | |
| ユーザー |
cleantted
|
| 提出日時 | 2023-06-14 14:25:47 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,442 bytes |
| コンパイル時間 | 854 ms |
| コンパイル使用メモリ | 94,520 KB |
| 最終ジャッジ日時 | 2025-02-14 02:34:25 |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 18 WA * 17 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:15:18: warning: ‘i’ may be used uninitialized [-Wmaybe-uninitialized]
15 | for (ll i; i < M; ++i) {
| ~~^~~
main.cpp:15:13: note: ‘i’ was declared here
15 | for (ll i; i < M; ++i) {
| ^
ソースコード
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
#include <tuple>
using namespace std;
using ll = long long;
int main() {
ll N, M, X;
cin >> N >> M >> X;
ll u, v, a, b;
vector<vector<tuple<int, int, int>>> G(N);
for (ll i; i < M; ++i) {
cin >> u >> v >> a >> b;
--u;
--v;
G[u].push_back(make_tuple(b, v, a));
G[v].push_back(make_tuple(b, u, a));
}
auto f = [&](ll m) {
priority_queue<tuple<ll, ll>> S;
vector<bool> fixed(N, false);
vector<ll> D(N, 1e18);
D[0] = 0;
S.push(make_tuple(0, 0));
while (!S.empty()) {
auto [c, i] = S.top();
S.pop();
if (i == N - 1) {
break;
}
if (fixed[i]) {
continue;
}
fixed[i] = true;
for (auto& [b, j, a] : G[i]) {
if (m > b) {
continue;
}
if (D[j] <= c + a) {
continue;
}
D[j] = c + a;
S.push(make_tuple(c + a, j));
}
}
return D[N - 1] <= X;
};
ll l = -1;
ll r = 1e9 + 10;
while (r - l > 1) {
ll m = (l + r) / 2;
if (f(m)) {
l = m;
} else {
r = m;
}
}
cout << l << endl;
return 0;
}
cleantted