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

#TimeUsernameProblemLanguageResultExecution timeMemory
232943amoo_safarPaprike (COI18_paprike)C++14
100 / 100
83 ms17144 KiB
#include <bits/stdc++.h> #define pb push_back #define F first #define S second #define all(x) x.begin(), x.end() #define debug(x) cerr << #x << " : " << x << '\n' using namespace std; typedef long long ll; typedef long double ld; typedef string str; typedef pair<ll, ll> pll; const ll Mod = 1000000007LL; const int N = 1e5 + 10; const ll Inf = 2242545357980376863LL; const ll Log = 30; ll n, k; ll a[N], dp[N], c[N]; vector<ll> G[N]; bool CMP(int i, int j){ return c[i] < c[j]; } void DFS(int u, int p){ dp[u] = 0; c[u] = a[u]; for(auto adj : G[u]){ if(adj == p) continue; DFS(adj, u); dp[u] += dp[adj] + 1; } sort(all(G[u]), CMP); for(auto adj : G[u]){ if(adj == p) continue; if(c[u] + c[adj] <= k){ dp[u] --; c[u] += c[adj]; } } } 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]; int u, v; for(int i = 1; i < n; i++){ cin >> u >> v; G[u].pb(v); G[v].pb(u); } DFS(1, -1); cout << dp[1] << '\n'; 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...