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