Submission #1095096

#TimeUsernameProblemLanguageResultExecution timeMemory
1095096epicci23Jobs (BOI24_jobs)C++17
14 / 100
11 ms860 KiB
#include "bits/stdc++.h"
#define int long long
#define all(v) v.begin() , v.end()
#define sz(a) (int)a.size()
using namespace std;


const int N = 2e3 + 5;
const int INF = 1e18;
int n,s;
vector<int> v[N];
int par[N],ar[N];
int bak=-1,xd=0;

void dfs(int c=0LL,int mini=0LL,int cur=0LL){
  if(mini>=-s && cur>xd){
  	xd=cur;
  	bak=c;
  }
  for(int x:v[c]) dfs(x,min(mini,cur+ar[x]),cur+ar[x]);
}

void _(){
  cin >> n >> s;
  int lol=s;
  for(int i=1;i<=n;i++){
  	cin >> ar[i] >> par[i];
  	v[par[i]].push_back(i);
  }

  while(true){
    bak=-1;xd=0;
    dfs();
    if(bak==-1) break;
    int c=bak;
    while(c>0){
      s+=ar[c];
      ar[c]=0;
      c=par[c];
    }
  }

  cout << s-lol << '\n';
}

int32_t main(){
  cin.tie(0); ios::sync_with_stdio(0);
  int tc=1;//cin >> tc;
  while(tc--) _();
  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...
#Verdict Execution timeMemoryGrader output
Fetching results...