ITREE - Nhãn của cây

Tác giả: hieult

Ngôn ngữ: C++

#include <cstdio>
//#include <conio.h>

struct dinh
{
    int soc,a[1001],cha,la,gt;};

dinh A[1001];
int i,n,f[1001],m;

int min(int a,int b)
{  return a<b ? a:b;}

int xuly(int x)
{
    int KQ=0;
    //printf("%d\n",x);
    for(int i = 1;i<=A[x].soc;i++)
    {
         if(A[A[x].a[i]].la)
              KQ = KQ + A[A[x].a[i]].gt;
         else KQ = KQ+min(A[A[x].a[i]].gt,xuly(A[x].a[i]));
    }
    //printf("%d %d\n",x,KQ);
    return KQ;
}

int main()
{
    //freopen("ITREE.in","r",stdin);
    int test;
    scanf("%d",&test);
    for(int ii=1;ii<=test;ii++)
    {
    scanf("%d",&n);
    for(i = 1;i<=n;i++)
    {        A[i].soc = 0; A[i].cha = 0; A[i].la = 1; }
    for(i = 2;i<=n;i++)
    {    
         scanf("%d %d",&m,&A[i].gt);
         A[i].cha = m;
         A[m].a[++A[m].soc] = i;
         A[m].la = 0;
    }
    //printf("%d\n",A[1].soc);
    printf("%d.00\n",xuly(1));
    }
    //getch();
}

Download