結果
| 問題 |
No.2712 Play more!
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-03-31 14:02:30 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 93 ms / 2,000 ms |
| コード長 | 1,423 bytes |
| コンパイル時間 | 2,279 ms |
| コンパイル使用メモリ | 209,532 KB |
| 最終ジャッジ日時 | 2025-02-20 16:51:08 |
|
ジャッジサーバーID (参考情報) |
judge3 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 33 |
ソースコード
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
cin.tie(nullptr);
ios::sync_with_stdio(false);
int N, M;
ll P;
cin >> N >> M;
vector<ll> S(N);
for(int i=0;i<N;i++)cin>>S[i];
vector<vector<pair<int, ll>>> G(N);
vector<vector<int>> IG(N);
for (int i = 0; i < M; i++) {
ll A, B, C;
cin >> A >> B >> C;
A--; B--;
G[A].push_back({ B,S[B]-C });
IG[B].push_back(A);
}
vector<bool> CGOAL(N, 0);
queue<int> Q;
Q.push(N - 1);
while (!Q.empty()) {
int p = Q.front();
Q.pop();
if (CGOAL[p])continue;
CGOAL[p] = 1;
for (auto v : IG[p]) {
if (!CGOAL[v])Q.push(v);
}
}
// cout<<"P"<<endl;
vector<ll> D(N, -1e18);
D[0] = 0;
for (ll m = 0; m < max(M, N) * 2; m++) {
for (ll n = 0; n < N; n++) {
for (auto v : G[n]) {
ll nd = D[n] + v.second;
ll nv = v.first;
D[nv] = max(D[nv], nd);
}
}
}
bool E = 0;
for (ll n = 0; n < N; n++) {
for (auto v : G[n]) {
ll nd = D[n] + v.second;
ll nv = v.first;
if (nd > D[nv]) {
if (CGOAL[nv]&&D[nv]>-1e17)E = 1;
}
}
}
if (E)cout << "inf" << endl;
else cout << max(0ll, D[N - 1]+S[0]) << endl;
}