Submission #1194477

#TimeUsernameProblemLanguageResultExecution timeMemory
1194477quangminh412Paprike (COI18_paprike)C++20
100 / 100
55 ms20144 KiB
#include <bits/stdc++.h>
using namespace std;

/*
  Ben Watson
  Handle codeforces : quangminh98

  Mua Code nhu mua Florentino !!
*/

#define ll long long

const string name = "test";

void solve();
signed main()
{
    if (fopen((name + ".inp").c_str(), "r"))
    {
        freopen((name + ".inp").c_str(), "r", stdin);
        freopen((name + ".out").c_str(), "w", stdout);
    }
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

    solve();

    return 0;
}

// main program
const int maxn = 1e5 + 1;

int n, k;
int h[maxn];
vector<int> adj[maxn];

int dp[maxn];
ll rem[maxn];
void DFS_DP(int u, int p = -1)
{
    rem[u] = h[u];
    vector<ll> tmp;

    for (int v : adj[u])
    {
        if (v == p)
            continue;

        DFS_DP(v, u);

        dp[u] += dp[v];
        tmp.push_back(rem[v]);
    }

    sort(tmp.begin(), tmp.end());
    int i = 0;
    while (i < (int)tmp.size() && rem[u] + tmp[i] <= k)
        rem[u] += tmp[i++];
    dp[u] += (int)tmp.size() - i;
}

void solve()
{
    cin >> n >> k;
    for (int i = 1; i <= n; i++)
        cin >> h[i];
    for (int i = 1; i < n; i++)
    {
        int u, v; cin >> u >> v;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }

    DFS_DP(1);

    cout << dp[1] << '\n';
}

Compilation message (stderr)

paprike.cpp: In function 'int main()':
paprike.cpp:20:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   20 |         freopen((name + ".inp").c_str(), "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
paprike.cpp:21:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   21 |         freopen((name + ".out").c_str(), "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...