1 const maxn=1000000+10;
2 type node=record
3 from,go,next,w:int64;
4 end;
5 var ans:int64;
6 e:array[0..2*maxn] of node;
7 head,s:array[0..maxn] of int64;
8 v:array[0..maxn] of boolean;
9 i,n,x,y,z,root,tot:longint;
10 procedure ins(x,y,z:longint);
11 begin
12 inc(tot);
13 e[tot].from:=x;e[tot].w:=z;e[tot].go:=y;e[tot].next:=head[x];head[x]:=tot;
14 end;
15 procedure insert(x,y,z:longint);
16 begin
17 ins(x,y,z);ins(y,x,z);
18 end;
19 procedure init;
20 begin
21 readln(n);
22 for i:=1 to n-1 do begin readln(x,y,z);insert(x,y,z);end;
23 end;
24 procedure dfs(x:longint);
25 var i,y:longint;
26 begin
27 s[x]:=0;
28 v[x]:=true;
29 i:=head[x];
30 while i<>0 do
31 begin
32 y:=e[i].go;
33 if not(v[y]) then
34 begin
35 dfs(y);
36 inc(s[x],s[y]);
37 inc(ans,e[i].w*(abs(s[y]-(n-s[y]))));
38 end;
39 i:=e[i].next;
40 end;
41 inc(s[x]);
42 end;
43 procedure main;
44 begin
45 randomize;
46 ans:=0;
47 root:=random(n)+1;
48 fillchar(v,sizeof(v),false);
49 dfs(root);
50 writeln(ans);
51 end;
52 begin
53 assign(input,‘road.in‘);assign(output,‘road.out‘);
54 reset(input);rewrite(output);
55 init;
56 main;
57 close(input);close(output);
58 end.