結果
| 問題 | No.3653 Space-Time Courier |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-08-28 22:24:29 |
| 言語 | C++23 (gcc 15.2.0 + boost 1.90.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 902 bytes |
| 記録 | |
| コンパイル時間 | 2,289 ms |
| コンパイル使用メモリ | 341,424 KB |
| 実行使用メモリ | 6,400 KB |
| 最終ジャッジ日時 | 2026-08-28 22:25:24 |
| 合計ジャッジ時間 | 4,189 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge3_1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 20 WA * 8 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int n, m;
cin >> n >> m;
vector<int> p(n);
for(auto &&v : p) cin >> v;
vector<tuple<int,int,int>> E(m);
for(auto &&[u, v, w] : E){
cin >> u >> v >> w;
u--, v--;
}
ll mn = 1ll << 60, ans = 0;
vector<pair<ll,ll>> dp(n);
for(int i = 0; i < n; i++) dp[i] = make_pair(p[i], 1);
for(int i = 0; i < n; i++){
vector<pair<ll,ll>> ndp(n, make_pair(1ll << 62, 0));
for(auto [u, v, w] : E){
if(dp[u].first + w < ndp[v].first){
ndp[v].first = dp[u].first + w;
ndp[v].second = 0;
}
if(dp[u].first + w == ndp[v].first) ndp[v].second += dp[u].second;
}
swap(dp, ndp);
for(int i = 0; i < n; i++){
ll v = dp[i].first + p[i];
if(v < mn){
mn = v;
ans = 0;
}
if(mn == v) ans += dp[i].second;
}
}
cout << mn << " " << ans << '\n';
}