Submission #1271858

#TimeUsernameProblemLanguageResultExecution timeMemory
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...