#include <stdio.h>
#include <iostream.h>
#define DEBUG 1
const int max = 99999 ;
const int N = 101 ;
int n ,map [N ][N ],dis [N ],used [N ];
void prim (int u )
{
int i ,j ,index ,sum ,min ;
sum = 0 ;
for(i = 1 ;i <=n ;++i )
{
dis [i ]=map [ 1 ][i ];
used [i ]= 0 ;
}
dis [u ]= 0 ;
used [u ]= 1 ;
for(i = 1 ;i <n ;i ++)
{
min =max ;
for(j = 1 ;j <=n ;j ++)
{
if(!used [j ]&&min >dis [j ])
{
index =j ;
min =dis [j ] ;
}
}
used [index ]= 1 ;
sum +=min ;
for(j = 1 ;j <=n ;j ++)
{
if(!used [j ]&&dis [j ]>map [index ][j ])
dis [j ]=map [index ][j ];
}
}
cout <<sum <<endl ;
}
int main()
{
int i ,j ,d ,geshu ,weight ;
char ch , to ;
while( scanf ( "%d" ,&n )&&n )
{
for(i = 1 ;i <=n ;i ++)
{
for(j = 1 ;j <=n ;j ++)
{
map [i ][j ]=max ;
}
}
for(i = 1 ;i <n ;i ++)
{
cin >>ch >>geshu ;
for(j = 1 ;j <=geshu ;++j )
{
cin >>to >>weight ;
map [i ][to - 'A' + 1 ]=map [to - 'A' + 1 ][i ]=weight ;
}
}
prim ( 1 );
}
return 0 ;
}
#include <iostream.h>
#define DEBUG 1
const int max = 99999 ;
const int N = 101 ;
int n ,map [N ][N ],dis [N ],used [N ];
void prim (int u )
{
int i ,j ,index ,sum ,min ;
sum = 0 ;
for(i = 1 ;i <=n ;++i )
{
dis [i ]=map [ 1 ][i ];
used [i ]= 0 ;
}
dis [u ]= 0 ;
used [u ]= 1 ;
for(i = 1 ;i <n ;i ++)
{
min =max ;
for(j = 1 ;j <=n ;j ++)
{
if(!used [j ]&&min >dis [j ])
{
index =j ;
min =dis [j ] ;
}
}
used [index ]= 1 ;
sum +=min ;
for(j = 1 ;j <=n ;j ++)
{
if(!used [j ]&&dis [j ]>map [index ][j ])
dis [j ]=map [index ][j ];
}
}
cout <<sum <<endl ;
}
int main()
{
int i ,j ,d ,geshu ,weight ;
char ch , to ;
while( scanf ( "%d" ,&n )&&n )
{
for(i = 1 ;i <=n ;i ++)
{
for(j = 1 ;j <=n ;j ++)
{
map [i ][j ]=max ;
}
}
for(i = 1 ;i <n ;i ++)
{
cin >>ch >>geshu ;
for(j = 1 ;j <=geshu ;++j )
{
cin >>to >>weight ;
map [i ][to - 'A' + 1 ]=map [to - 'A' + 1 ][i ]=weight ;
}
}
prim ( 1 );
}
return 0 ;
}