結果
| 問題 | No.3712 Urban Train |
| コンテスト | |
| ユーザー |
aotyam
|
| 提出日時 | 2026-09-12 12:30:40 |
| 言語 | C++23(gcc16) (gcc 16.1.0 + boost 1.92.0 + ACL) |
| 結果 |
WA
不安定
|
| 実行時間 | - |
| コード長 | 2,918 bytes |
| 記録 | |
| コンパイル時間 | 6,462 ms |
| コンパイル使用メモリ | 437,764 KB |
| 実行使用メモリ | 20,432 KB |
| 最終ジャッジ日時 | 2026-09-12 12:31:11 |
| 合計ジャッジ時間 | 10,129 ms |
|
ジャッジサーバーID (参考情報) |
judge3_1 / judge2_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 35 WA * 4 |
ソースコード
#ifdef ONLINE_JUDGE
#pragma GCC target("avx2")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#endif
#include <bits/stdc++.h>
#include <atcoder/all>
using namespace std;
using namespace atcoder;
using ll = long long;
using ull = unsigned long long;
using ld = long double;
using mint = modint998244353;
using mint2 = modint1000000007;
#define each(a, ...) for(auto& __VA_ARGS__ : a)
#define Each(a, ...) for(auto __VA_ARGS__ : a)
#define sz(a) (ll)a.size()
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()
template<class T, class U> inline bool chmax(T &a, U &&b) { if (a >= (T)b) return false; a = b; return true; }
template<class T, class U> inline bool chmin(T &a, U &&b) { if (a <= (T)b) return false; a = b; return true; }
template<class T, class U> istream &operator>>(istream &is, pair<T, U> &p) { return is >> p.first >> p.second; }
template<class T> requires requires(T t) { begin(t); end(t); } && (!is_same_v<T, string>) istream &operator>>(istream &is, T &v) { for (auto &x : v) is >> x; return is; }
template<class... T> inline void in(T&... a) { (cin >> ... >> a); }
template<class T, class U> ostream &operator<<(ostream &os, const pair<T, U> &p) { return os << p.first << ' ' << p.second; }
template<class T> requires requires(T t) { begin(t); end(t); } && (!is_same_v<T, string>) ostream &operator<<(ostream &os, const T &v) { for (auto it = begin(v); it != end(v); it++) os << (it == begin(v) ? "" : " ") << *it; return os; }
void out() { cout << '\n'; }
template<class T, class... U> inline void out(T &&a, U&&... b) { cout << a; ((cout << ' ' << b), ...); cout << '\n'; }
template<class... T> inline void print(T&&... a) { (cout << ... << a); }
template<class T = string, class U = string> inline bool yn(bool a, T &&b = "Yes", U &&c = "No") { if (a) out(b); else out(c); return a; }
constexpr ll inf = LLONG_MAX >> 2;
constexpr array<pair<ll, ll>, 4> dxdy4 = {{{-1, 0}, {0, -1}, {1, 0}, {0, 1}}};
constexpr array<pair<ll, ll>, 8> dxdy8 = {{{-1, 0}, {-1, -1}, {0, -1}, {1, -1}, {1, 0}, {1, 1}, {0, 1}, {-1, 1}}};
void Main() {
ull N,M;in(N,M);
vector<vector<pair<ull,ull>>>G(N);
while(M--){
ull U,V,W;in(U,V,W);
U--,V--;
G[U].emplace_back(V,W);
G[V].emplace_back(U,W);
}
vector<ull>A(N),B(N),C(N);in(A,B,C);
priority_queue<pair<ull,ull>,vector<pair<ull,ull>>,greater<pair<ull,ull>>>pq;
vector<ull>D(N,ULLONG_MAX);
D[0]=1;
pq.emplace(1,0);
while(sz(pq)){
auto[Di,i]=pq.top();pq.pop();
if(Di!=D[i])continue;
ull j=(Di+A[i]-1)/A[i];
ull dD1=(j%B[i]==0?min(A[i]*j-Di+C[i],A[i]*(j+1)):A[i]*j-Di);
each(G[i],[k,dD2])if(chmin(D[k],D[i]+dD1+dD2))pq.emplace(D[k],k);
}
out(D[N-1]);
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout << fixed << setprecision(20);
Main();
cout << flush;
_Exit(EXIT_SUCCESS);
}
aotyam