제출 #1271858

#제출 시각아이디문제언어결과실행 시간메모리
1271858ofozJourney (NOI18_journey)C++20
20 / 100
0 ms324 KiB
#include <bits/stdc++.h> #pragma GCC optimize("O2") using namespace std; #define int long long #define vc vector<char> #define vi vector<int> #define vb vector<bool> #define pi pair<int, int> #define ppi pair<pair<int, int>, int> #define multi multiset<int> #define multp multiset<pi> #define endl '\n' const int INF = INT32_MAX; const int MOD = 998244353; const int S = 400; const int MAXVAL = 5e8 + 1; void solve() { int n, m, h; cin >> n >> m >> h; vector<vector<pi>> revAdj(n); for (int i = 0; i < n-1; i++) { for (int j = 0; j < h; j++) { int to, k; cin >> to >> k; revAdj[to].push_back({i, k}); } } vector<vi> dp(n, vi(m, 0)); dp[0][0] = 1; for (int v = 1; v < n; v++) { for (int t = 0; t < m; t++) { for (pi p : revAdj[v]) { int to, w; tie(to, w) = p; for (int c = w; c <= t; c++) { dp[v][t] = min(MAXVAL, dp[v][t] + dp[to][t-c]); } } } } for (int k = 0; k < m; k++) cout << dp[n-1][k] << ' '; } /* */ signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); bool test = 0; int t; if (!test) t = 1; else cin >> t; while (t--) { solve(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...