Cod sursa(job #36879)

Utilizator MARCELMIHALCEA MARICEL MARCEL Data 24 martie 2007 11:34:57
Problema Radiatie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb

#include<stdio.h>
#include<stdlib.h>

#define  Nmax 100002

long t[Nmax];
char viz[Nmax];
int S,Sc[Nmax];

int main()
{

long n,i,pr=1,ul=0,elem,c[Nmax],nrcomp=0;


freopen("mese.in","r",stdin);
freopen("mese.out","w",stdout);

scanf("%ld%d",&n,&S);

for(i=1;i<=n;i++)
 {
  scanf("%ld%d",&t[i],&Sc[i]);
  viz[ t[i] ] ='0';
  }

  for(i=1;i<=n;i++)
  if( viz[i] != '0' )
    {
     viz[i]='1';
     c[++ul]=i;
     }

Sc[0]=300;

  while( pr <= ul )
   {
   elem=c[pr++];


   if( Sc[elem] + Sc[ t[elem] ] <= S )
  Sc[ t[elem] ] += Sc[elem];
  else nrcomp ++;

  if( t[elem] && viz[ t[elem] ] == '0' )
   {
    viz[ t[elem] ] ='1';
    c[++ul]=t[elem];
    }


   }


   printf("%ld\n",nrcomp);


  return 0;
  }