Pagini recente » Cod sursa (job #2652280) | Cod sursa (job #1201924) | Cod sursa (job #2135867) | Cod sursa (job #290808) | Cod sursa (job #276969)
Cod sursa(job #276969)
#include <iostream.h>
#include <fstream.h>
#define IN "mese.in"
#define OUT "mese.out"
#define max 100111
ifstream fin(IN);
ofstream fout(OUT);
long s,n,cd;
long val[max],g[max],coada[max],t[max];
int sw=1;
int main()
{
long i;
fin>>n>>s;
for(i=1;i<=n;i++)
{
fin>>t[i];
fin>>val[i];
if(t[i])
{
g[i]++;
g[t[i]]++;
}
}
fin.close();
while(sw)
{
cd=0;
for(i=1;i<=n;i++)
if(g[i]==1)
{
cd++;
coada[cd]=i;
}
if(cd==0)
break;
for(i=1;i<=cd;i++)
if(val[coada[i]]+val[t[coada[i]]]<=s)
{
val[t[coada[i]]]+=val[coada[i]];
val[coada[i]]=0;
g[coada[i]]--;
g[t[coada[i]]]--;
}
else
{
g[coada[i]]--;
g[t[coada[i]]]--;
}
}
cd=0;
for(i=1;i<=n;i++)
if(val[i])
cd++;
fout<<cd<<endl;
fout.close();
return 0;
}