Submission #1214110

#TimeUsernameProblemLanguageResultExecution timeMemory
1214110AzeTurk810Paprike (COI18_paprike)C++20
100 / 100
41 ms17496 KiB
/* Alone again Telebe of adicto yani AzeTurk810 Lost on you */ #include <algorithm> #include <iostream> #include <vector> using namespace std; using ll = long long; using ull = unsigned long long; #define ln '\n' #define INFi 1e9 #define INFll 1e18 int n , k; vector<vector<int>> g; vector<int> dp , a; void dfs(int v , int pa = -1) { vector<int> temp; for(auto u : g[v]) { if(u == pa) { continue; } dfs(u , v); dp[v] += dp[u]; temp.push_back(a[u]); } sort(temp.begin() , temp.end()); for(auto cur : temp) { if(a[v] + cur <= k) { a[v] += cur; } else { dp[v]++; } } } void solve() { cin >> n >> k; g.resize(n); dp.resize(n); a.resize(n); for(int i = 0 ; i < n ; i ++) { cin >> a[i]; } for(int i = 0; i < n - 1 ; i ++) { int u , v; cin >> u >> v; u--;v--; g[u].push_back(v); g[v].push_back(u); } dfs(0); cout << dp[0] << ln; } signed main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int t = 1; while(t--) solve(); } //
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...