uses math;
const maxc=10000;
var n,i,j,t,u:longint;
fi,fo:text;
f:array[0..1020]of longint;
c:array[0..1020,0..1020]of longint;
procedure init;
var v:longint;
begin
fillchar(c,sizeof(c),0);
for v:=1to n do f[v]:=maxc;
end;
procedure dfs(u:longint);
var v:longint;
begin
for v:=1to n do
if c[u,v]<>0 then
begin
c[v,u]:=0;
dfs(v);
if f[u]=maxc then f[u]:=0;
f[u]:=f[u]+min(f[v],c[u,v]);
end;
end;
begin
assign(fi,'t.inp');reset(fi);
assign(fo,'t.out');rewrite(fo);
readln(fi,t);
for i:=1to t do
begin
readln(fi,n);
init;
for j:=2to n do
begin
readln(fi,u,c[u,j]);
c[j,u]:=c[u,j];
end;
dfs(1);
writeln(fo,f[1],'.00');
end;
close(fi);close(fo);
end.
dXNlcyBtYXRoOwpjb25zdCBtYXhjPTEwMDAwOwp2YXIgbixpLGosdCx1OmxvbmdpbnQ7CiAgICBmaSxmbzp0ZXh0OwogICAgZjphcnJheVswLi4xMDIwXW9mIGxvbmdpbnQ7CiAgICBjOmFycmF5WzAuLjEwMjAsMC4uMTAyMF1vZiBsb25naW50Owpwcm9jZWR1cmUgaW5pdDsKdmFyIHY6bG9uZ2ludDsKYmVnaW4KICBmaWxsY2hhcihjLHNpemVvZihjKSwwKTsKICBmb3Igdjo9MXRvIG4gZG8gZlt2XTo9bWF4YzsKZW5kOwoKcHJvY2VkdXJlIGRmcyh1OmxvbmdpbnQpOwp2YXIgdjpsb25naW50OwpiZWdpbgogIGZvciB2Oj0xdG8gbiBkbwogICBpZiBjW3Usdl08PjAgdGhlbgogICAgYmVnaW4KICAgICAgY1t2LHVdOj0wOwogICAgICBkZnModik7CiAgICAgIGlmIGZbdV09bWF4YyB0aGVuIGZbdV06PTA7CiAgICAgIGZbdV06PWZbdV0rbWluKGZbdl0sY1t1LHZdKTsKICAgIGVuZDsKZW5kOwoKYmVnaW4KICBhc3NpZ24oZmksJ3QuaW5wJyk7cmVzZXQoZmkpOwogIGFzc2lnbihmbywndC5vdXQnKTtyZXdyaXRlKGZvKTsKICByZWFkbG4oZmksdCk7CiAgZm9yIGk6PTF0byB0IGRvCiAgIGJlZ2luCiAgICAgcmVhZGxuKGZpLG4pOwogICAgIGluaXQ7CiAgICAgZm9yIGo6PTJ0byBuIGRvCiAgICAgIGJlZ2luCiAgICAgICAgcmVhZGxuKGZpLHUsY1t1LGpdKTsKICAgICAgICBjW2osdV06PWNbdSxqXTsKICAgICAgZW5kOwogICAgIGRmcygxKTsKICAgICB3cml0ZWxuKGZvLGZbMV0sJy4wMCcpOwogICBlbmQ7CiAgY2xvc2UoZmkpO2Nsb3NlKGZvKTsKZW5kLgoK