Submission #1309988

#TimeUsernameProblemLanguageResultExecution timeMemory
1309988wangzhiyi33Paprike (COI18_paprike)C++20
100 / 100
34 ms17512 KiB
#include<bits/stdc++.h> using namespace std; #define int long long const int maxn=1e5; int h[maxn+2],n,k; vector<int>adj[maxn+2]; int ans=0; int dfs(int cur,int par){ vector<int>isi; int sum=h[cur]; for(auto x : adj[cur]){ if(x==par)continue; isi.push_back(dfs(x,cur)); sum+=isi.back(); } sort(isi.begin(),isi.end()); for(int q=isi.size()-1;q>=0 && sum>k;q--){ ans++; sum-=isi[q]; } return sum; } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0); cin>>n>>k; for(int q=1;q<=n;q++)cin>>h[q]; for(int q=1;q<n;q++){ int u,v; cin>>u>>v; adj[u].push_back(v); adj[v].push_back(u); } dfs(1,-1); cout<<ans<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...