結果
| 問題 |
No.2387 Yokan Factory
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-07-21 22:28:11 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 726 ms / 5,000 ms |
| コード長 | 1,451 bytes |
| コンパイル時間 | 2,240 ms |
| コンパイル使用メモリ | 182,732 KB |
| 実行使用メモリ | 13,324 KB |
| 最終ジャッジ日時 | 2024-09-21 23:57:03 |
| 合計ジャッジ時間 | 9,570 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 35 |
コンパイルメッセージ
main.cpp: In lambda function:
main.cpp:38:22: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17' [-Wc++17-extensions]
38 | for(auto [v,w]:e[u]){
| ^
ソースコード
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node{
int u,v;
ll a,b;
};
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int n,m;
ll X;
cin >> n >> m >> X;
std::vector<node> a(m);
for(int i = 0;i < m;i ++){
cin >> a[i].u >> a[i].v >> a[i].a >> a[i].b;
}
auto check = [&](int x)->bool{
std::vector<std::vector<pair<int,ll>>> e;
e.resize(n + 1);
for(int i = 0;i < m;i ++){
if(a[i].b >= x){
e[a[i].u].push_back({a[i].v,a[i].a});
e[a[i].v].push_back({a[i].u,a[i].a});
}
}
vector<ll> dis(n + 1,1e18 + 7);
std::vector<int> vis(n + 1);
priority_queue<pair<ll,int>> q;
dis[1] = 0;
q.push({dis[1],1});
while(!q.empty()){
int u = q.top().second;
q.pop();
if(vis[u])continue;
vis[u] = 1;
for(auto [v,w]:e[u]){
if(dis[v] > dis[u] + w){
dis[v] = dis[u] + w;
q.push({-dis[v],v});
}
}
}
if(dis[n] <= X){
return true;
}return false;
};
int l = 0,r = 1e9,ans = -1;
while(l <= r){
int mid = l + r >> 1;
if(check(mid)){
l = mid + 1;
ans = mid;
}else r = mid - 1;
}
cout << ans << "\n";
return 0;
}