#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;
if (to < i) continue;
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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |