Submission #153794

#TimeUsernameProblemLanguageResultExecution timeMemory
153794arnold518Fireworks (APIO16_fireworks)C++14
19 / 100
28 ms7928 KiB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

const int MAXN = 3e5;

int N, M;
vector<pii> adj[MAXN+10];
int dp[MAXN+10][400], ans=987654321;

void dfs(int now)
{
    int i, j;

    if(now>N)
    {
        dp[now][0]=0;
        for(i=1; i<=300; i++) dp[now][i]=987654321;
        return;
    }

    for(auto nxt : adj[now]) dfs(nxt.first);

    for(i=0; i<=300; i++)
    {
        dp[now][i]=0;
        for(auto nxt : adj[now])
        {
            int t=987654321;
            for(j=0; j<=i; j++) t=min(t, dp[nxt.first][j]+abs(i-j-nxt.second));
            dp[now][i]+=t;
        }
    }
}

int main()
{
    int i, j;

    scanf("%d%d", &N, &M);
    for(i=2; i<=N+M; i++)
    {
        int p, c;
        scanf("%d%d", &p, &c);
        adj[p].push_back({i, c});
    }

    dfs(1);
    ans=987654321;
    for(i=0; i<=300; i++) ans=min(ans, dp[1][i]);
    printf("%d", ans);
}

Compilation message (stderr)

fireworks.cpp: In function 'int main()':
fireworks.cpp:41:12: warning: unused variable 'j' [-Wunused-variable]
     int i, j;
            ^
fireworks.cpp:43:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d", &N, &M);
     ~~~~~^~~~~~~~~~~~~~~~
fireworks.cpp:47:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d", &p, &c);
         ~~~~~^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...