(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 #557101

#TimeUsernameProblemLanguageResultExecution timeMemory
557101Yazan_AlattarPaprike (COI18_paprike)C++14
100 / 100
60 ms21872 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; #define F first #define S second #define pb push_back #define endl "\n" #define all(x) x.begin(), x.end() const int M = 200007; const ll inf = 2e9; const ll mod = 1e9 + 7; const double pi = acos(-1); const double eps = 1e-6; const int dx[] = {0, -1, 0, 1}, dy[] = {1, 0, -1, 0}; const int block = 320; vector <int> adj[M]; ll n, k, a[M], ans; ll dfs(int node, int p){ vector <ll> v; for(auto i : adj[node]) if(i != p) v.pb(dfs(i, node)); ll ret = a[node]; sort(all(v)); for(auto i : v) if(ret + i <= k) ret += i; else ++ans; return ret; } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> k; for(int i = 1; i <= n; ++i) cin >> a[i]; for(int i = 1; i < n; ++i){ int v, u; cin >> v >> u; adj[v].pb(u); adj[u].pb(v); } dfs(1, 0); cout << ans << endl; 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...