(UPD: 2024-12-04 14:48 UTC) Judge is not working due to Cloudflare incident. (URL) We can do nothing about it, sorry. After the incident is resolved, we will grade all submissions.

Submission #578963

#TimeUsernameProblemLanguageResultExecution timeMemory
578963ddy888Paprike (COI18_paprike)C++17
100 / 100
85 ms21868 KiB
#undef _GLIBCXX_DEBUG #include <bits/stdc++.h> using namespace std; using ll = long long; #define pb push_back #define fi first #define si second typedef pair<ll,ll> pi; typedef tuple<int,int,int> ti; void debug_out() {cerr<<endl;} template <typename Head, typename... Tail> void debug_out(Head _H, Tail... _T) {cerr<<" "<<to_string(_H);debug_out(_T...);} #define debug(...) cerr<<"["<<#__VA_ARGS__<<"]:",debug_out(__VA_ARGS__) mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const int MAXN = 100010; int n, k; vector<int> g[MAXN]; int ans; ll arr[MAXN]; ll sum[MAXN]; void dfs(int x, int p) { priority_queue<ll> hit; sum[x] = arr[x]; for (auto i: g[x]) { if (i == p) continue; dfs(i, x); sum[x] += sum[i]; hit.push(sum[i]); } while (hit.size() && sum[x] > k) { sum[x] -= hit.top(); hit.pop(); ++ans; } } int main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin >> n >> k; for (int i = 1; i <= n; ++i) cin >> arr[i]; for (int i = 1; i < n; ++i) { int u, v; cin >> u >> v; g[u].pb(v); g[v].pb(u); } dfs(1, 1); cout << ans; 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...