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();
}