#include<iostream>
#include<stdlib.h>
#include<string.h>
using namespace std;
const long long N=1000010;long long n;
long long h[N],ne[N],z[N],v[N],idx=0,have[N],sum=0,s[N];
//typedef long long long long;
bool j[N];
void add (long long a,long long b,long long c){
ne[++idx]=h[a];
h[a]=idx;
z[idx]=b;
v[idx]=c;
s[idx]=a;
}
long long dfs(long long wz,long long father){
// if(j[wz]){
// have[wz]+=have[father];
// return have[wz];
// }
if(j[wz])return 0;
j[wz]=1;
long long ans=1;
for(long long i=h[wz];i;i=ne[i]){
if(z[i]!=father)
// sum+=abs(n-have[i]*2)*v[i];
ans+=dfs(z[i],wz);
}
have[wz]=ans;
return ans;
}
//void dfs2(long long wz){
// long long ans=0;
// for(long long i=h[wz];i;i=ne[i]){
// dfs2(z[i]);
// ans+=abs()
// }
//}
long long abs(long long a,long long b){
if(a>b)
return b;
else
return a;
}
int main(){
cin>>n;
for(long long i=1;i<n;i++){
long long a,b,c;
cin>>a>>b>>c;
add(a,b,c);
add(b,a,c);
// r[a]=1;
}
memset(have,0,sizeof(have));
memset(j,0,sizeof(j));
dfs(1,0);
// for(long long i=1;i<=n;i++){
// if(!j[i]&&!r[i]){
// have[i]=dfs(i,0);
// }
// }
memset(j,0,sizeof(j));
// for(i=1;i<=n;i++){
// if(!j[i]){
// dfs2(i);
// }
// }
// for(i=1;i<=n;i++){
//
// }
//for(long long i=1;i<=idx;i++)
//cout<<abs(n-have[z[i]]*2)<<' ';
for(long long i=1;i<=idx;i+=2){
sum+=abs(n-min(have[z[i]],have[s[i]])*2)*v[i];
}
cout<<sum;
return 0;
}
RT,我重打了abs(错的),但是没有报错