fork download
  1. #include <bits/stdc++.h>
  2. #include <iomanip>
  3. #include <ext/pb_ds/assoc_container.hpp>
  4. #include <ext/pb_ds/tree_policy.hpp>
  5. using namespace __gnu_pbds;
  6. #define ordered_set tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>
  7. using namespace std;
  8. #define ll long long
  9. #define pb push_back
  10. #define all(a) a.begin(),a.end()
  11. #define death ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
  12.  
  13. ////////////////////////////////////global variables//////////////////////////////////////////////////
  14. int n;
  15. map<int ,vector<int>> adj;
  16. map<int, bool> vis;
  17. vector<int>c;
  18. int leaves=0;
  19. ////////////////////////////////////recursion/////////////////////////////////////////////////////////
  20.  
  21. /////////////////////////////////////functions///////////////////////////////////////////////////////
  22. bool isLeaf(int node) {
  23. return adj[node].size() == 1;
  24. }
  25. void dfs(ll num,int m,int catCnt){
  26. vis[num] = true;
  27. if (c[num]==1) catCnt++;
  28. else catCnt=0;
  29. if (catCnt > m) return;
  30. for (int i = 0; i < adj[num].size(); i++) {
  31. int ch = adj[num][i];
  32. if (!vis[ch]) {
  33. dfs(ch, m, catCnt);
  34. }
  35. }
  36.  
  37. if (isLeaf(num)&& num!=1)
  38. leaves++;
  39. }
  40. /////////////////////////////////////////////////////////////////////////////////////////////////////
  41.  
  42. void neverland() {
  43. int m; cin>>n>>m;
  44. c.clear();
  45. c.resize(n + 1);
  46. for (int i=1;i<=n;i++)
  47. {
  48. int cat; cin>>cat;
  49. c.pb(cat);
  50. }
  51. int x,y;
  52. int catCnt=0;
  53. for (int i=1;i<n;i++){
  54. cin>>x>>y;
  55. adj[x].pb(y);
  56. adj[y].pb(x);
  57. }
  58.  
  59. dfs(1,m,0);
  60. cout<<leaves<<endl;
  61.  
  62. }
  63. int main() {
  64. death;
  65. long long t=1;
  66. // cin>>t;
  67. while(t--){
  68. neverland();
  69. }
  70. }
Success #stdin #stdout 0.01s 5304KB
stdin
4 1
1 1 0 0
1 2
1 3
1 4
stdout
3