
1 var head,vet,next,x,y,dep,size:array[1..200000]of longint; 2 z:array[1..200000]of extended; 3 n,i,m,tot,x1:longint; 4 ans,fenmu,y1:extended; 5 6 procedure add(a,b:longint); 7 begin 8 inc(tot); 9 next[tot]:=head[a]; 10 vet[tot]:=b; 11 head[a]:=tot; 12 end; 13 14 procedure dfs(u,fa:longint); 15 var e,v:longint; 16 begin 17 size[u]:=1; 18 e:=head[u]; 19 while e<>0 do 20 begin 21 v:=vet[e]; 22 if v<>fa then 23 begin 24 dep[v]:=dep[u]+1; 25 dfs(v,u); 26 size[u]:=size[u]+size[v]; 27 end; 28 e:=next[e]; 29 end; 30 end; 31 32 procedure swap(var x,y:longint); 33 var t:longint; 34 begin 35 t:=x; x:=y; y:=t; 36 end; 37 38 function clac(k:longint):extended; 39 var xx,yy:extended; 40 begin 41 xx:=size[y[k]]; 42 yy:=n-xx; 43 exit(2.0*z[k]/fenmu*(xx*(xx-1)/2*yy+yy*(yy-1)/2*xx)); 44 end; 45 46 begin 47 //assign(input,'1.in'); reset(input); 48 //assign(output,'1.out'); rewrite(output); 49 readln(n); 50 for i:=1 to n-1 do 51 begin 52 read(x[i],y[i],z[i]); 53 add(x[i],y[i]); 54 add(y[i],x[i]); 55 end; 56 dfs(1,0); 57 for i:=1 to n-1 do 58 if dep[x[i]]>dep[y[i]] then swap(x[i],y[i]); 59 fenmu:=1.0*n*(n-1)*(n-2)/6; 60 for i:=1 to n-1 do ans:=ans+clac(i); 61 62 63 readln(m); 64 for i:=1 to m do 65 begin 66 readln(x1,y1); 67 ans:=ans-clac(x1); 68 z[x1]:=y1; 69 ans:=ans+clac(x1); 70 writeln(ans:0:10); 71 end; 72 73 //close(input); 74 //close(output); 75 end.