Pagini recente » onis-2016-runda-finala | Istoria paginii runda/fmi-no-stress-9-warmup | Profil Robybrasov | Monitorul de evaluare | Cod sursa (job #2021728)
#include<fstream>
#include<algorithm>
#include<vector>
using namespace std;
int n,MAX,cost[100100],sol;
vector <int> G[100100];
inline bool Sortare(int x,int y)
{
return cost[x]<cost[y];
}
inline void DFS(int x)
{
vector <int>::iterator it;
for(it=G[x].begin();it!=G[x].end();it++)
{
DFS(*it);
cost[x]+=cost[*it];
}
sort(G[x].begin(),G[x].end(),Sortare);
it=G[x].end()-1;
while(cost[x]>MAX)
{
cost[x]-=cost[*it];
sol++;
it--;
}
}
int main()
{
int i,tata;
ifstream fin("mese.in");
fin>>n>>MAX;
for(i=1;i<=n;i++)
{
fin>>tata>>cost[i];
G[tata].push_back(i);
}
fin.close();
sol=1;
DFS(0);
ofstream fout("mese.out");
fout<<sol<<"\n";
fout.close();
return 0;
}