Pagini recente » Cod sursa (job #1653176) | Cod sursa (job #246887) | Cod sursa (job #2363539) | Cod sursa (job #431073) | Cod sursa (job #1701568)
#include<fstream>
#include<vector>
#include<algorithm>
#define DIM 100005
using namespace std;
int n, i, x, y, rad, sol, sum;
int val[DIM], s[DIM], w[DIM];
vector<int> v[DIM];
ifstream fin("mese.in");
ofstream fout("mese.out");
void dfs(int nod){
s[nod] = val[nod];
int i, vecin, x, nr = 0;
for(i = 0; i < v[nod].size(); i++){
vecin = v[nod][i];
dfs(vecin);
w[++nr] = s[vecin];
}
sort(w + 1, w + nr + 1);
for(i = 1; i <= nr; i++){
if(s[nod] + w[i] <= sum){
s[nod] += w[i];
}
else{
break;
}
}
sol += nr - i + 1;
}
int main(){
fin>> n >> sum;
for(i = 1; i <= n; i++){
fin>> x >> val[i];
if(x == 0){
rad = i;
}
else{
v[x].push_back(i);
}
}
dfs(rad);
fout<< sol + 1<<"\n";
return 0;
}