結果
問題 | No.2712 Play more! |
ユーザー |
![]() |
提出日時 | 2024-04-03 13:04:06 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,345 bytes |
コンパイル時間 | 2,408 ms |
コンパイル使用メモリ | 209,568 KB |
最終ジャッジ日時 | 2025-02-20 19:52:10 |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 WA * 1 |
other | MLE * 1 -- * 32 |
ソースコード
#include <bits/stdc++.h>using namespace std;using ll = long long;int main(){cin.tie(nullptr);ios_base::sync_with_stdio(false);ll N, M, A, B, C, start=0;ll from, to, c, alt, cnt=0;bool update;cin >> N >> M;vector<ll> v(N);for (int i=0; i<N; i++) cin >> v[i];vector<tuple<ll, ll, ll>> E(M);vector<vector<pair<ll, ll>>> ER(N);vector<ll> dist(N, 1e18);dist[start] = -v[0];for (int i=0; i<M; i++){cin >> A >> B >> C;A--; B--;E[i] = make_tuple(A, B, -v[B]+C);ER[B].push_back({A, i});}vector<bool> ok(M);auto dfs=[&](auto self, int from, int p)->void{for (auto [to, i] : ER[from]){if (to == p) continue;ok[i] = 1;self(self, to, from);}};dfs(dfs, N-1, -1);while(1){if (cnt == N){cout << "inf" << endl;return 0;}update = 0;for (int i=0; i<M; i++){if (!ok[i]) continue;tie(from, to, c) = E[i];alt = c + dist[from];if (dist[from] != 1e18 && alt < dist[to]){dist[to] = alt;update = 1;}}if (!update) break;cnt++;}cout << -dist[N-1] << endl;return 0;}