Advertisement
Guest User

Untitled

a guest
Sep 16th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. #include <vector>
  2. #include <set>
  3. #include <algorithm>
  4. #include <iostream>
  5.  
  6. #pragma GCC optimize("Ofast")
  7. #pragma GCC optimize("unroll-loops")
  8. #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
  9.  
  10. #define int long
  11. #define endl "\n"
  12. #define all(x) x.begin(),x.end()
  13. #define rr return 0
  14. #define xx first
  15. #define yy second
  16. #define pii pair<int,int>
  17.  
  18. using namespace std;
  19.  
  20. typedef long long ll;
  21. typedef long double ld;
  22.  
  23. int n, b, ans;
  24. vector<int> c;
  25. vector<int> l;
  26. vector<vector<int>> g;
  27. //vector<multiset<int>> kek;
  28.  
  29. multiset<int> dfs(int v){
  30. multiset<int> s;
  31. s.insert(c[v]);
  32. for(auto i : g[v]){
  33. multiset<int> t = dfs(i);
  34. if(s.size() < t.size()){
  35. swap(s, t);
  36. }
  37. for(auto j : t){
  38. s.insert(j);
  39. }
  40. }
  41. int cs = 0;
  42. int p = 0;
  43. multiset<int> ret;
  44. for(auto i : s){
  45. cs += i;
  46. if(cs > b){
  47. break;
  48. }
  49. ret.insert(i);
  50. p++;
  51. }
  52. ans = max(ans, l[v] * p);
  53. return ret;
  54. }
  55.  
  56. signed main(){
  57. ios_base::sync_with_stdio(0);
  58. cin.tie(0);
  59. cout.tie(0);
  60. cin >> n >> b;
  61. g.resize(n + 1);
  62. //kek.resize(n + 1);
  63. c.resize(n + 1);
  64. l.resize(n + 1);
  65. for(int i = 1;i <= n;i++){
  66. int x;
  67. cin >> x >> c[i] >> l[i];
  68. if(x != 0){
  69. g[x].push_back(i);
  70. }
  71. }
  72. ans = 0;
  73. dfs(1);
  74. cout << ans;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement