Cod sursa(job #52048)

Utilizator crawlerPuni Andrei Paul crawler Data 17 aprilie 2007 18:06:46
Problema Mese Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <stdio.h>
#include <vector>

using namespace std;

#define Nmax 100001

struct nod
 {
  vector<int> a;
  int c, mod;
  char v;
 } l[Nmax];

int n,S, SOL;

void DF(int nod)
 {
  l[nod].v = 1;
  l[nod].mod += l[nod].c;
  int i;

  for(i=0;i<l[nod].a.size();++i)
   {
    if(l[l[nod].a[i]].v == 0)
     DF(l[nod].a[i]);
    l[nod].mod += l[l[nod].a[i]].mod;
   }

  SOL += l[nod].mod / S;
  l[nod].mod %= S;
 }


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

  int a, i, tmp = 666;

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

  for(i=1;i<=n;++i)
   {
    scanf("%d%d", &a,&l[i].c);
    if(a)
     l[a].a.push_back(i);
      else
     tmp = i;
   }

  DF(tmp);
  SOL += l[tmp].mod > 0;

  printf("%d\n", SOL);

  return 0;
 }