Submission #47323

#TimeUsernameProblemLanguageResultExecution timeMemory
47323TalantFireworks (APIO16_fireworks)C++17
19 / 100
32 ms6164 KiB
#include <bits/stdc++.h>

#define mk make_pair
#define sc second
#define fr first
#define pb emplace_back
#define all(s) s.begin(), s.end()
#define sz(s) ( (int)s.size() )
#define int long long

using namespace std;

const int inf = (int)1e9 + 7;
const int N = (int)2e5 + 7;

int n,m;
int x,w;
int dp[302][302];
int ans = inf;

vector <pair<int,int> > g[N];

void dfs (int v) {
      for (auto to : g[v]) {
            dfs(to.fr);
            int u = to.fr;
            int w = to.sc;
            for (int i = 0; i <= 300; i ++) {
                  int mn = inf;
                  for (int j = 0; j <= i; j ++) {
                        mn = min(mn,dp[u][j] + abs(i - j - w));
                  }

                  dp[v][i] += mn;
            }
      }
}
main () {
      cin >> n >> m;

      for (int i = 2; i <= n + m; i ++) {
            cin >> x >> w;
            g[x].pb(mk(i,w));
      }
      for (int i = n + 1; i <= n + m; i ++)
            for (int j = 1; j <= 300; j ++)
                  dp[i][j] = inf;

      dfs(1);

      for (int i = 0; i <= 300; i ++) {
            ans = min(ans,dp[1][i]);
      }

      cout << ans << endl;
}

Compilation message (stderr)

fireworks.cpp:38:7: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main () {
       ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...