额...我已经发过无数个帖子了
帮帮我!!
#include<bits/stdc++.h>
using namespace std;
const int N=6.1e5;
long long n,m,u,v,w,cnt,ans,head[N],sum[N];
struct Edge{
int to,next,w;
}edge[N>>1];
void add(int u,int v,int w){
edge[++cnt].to=v;
edge[cnt].w=w;
edge[cnt].next=head[u];
head[u]=cnt;
}
void dfs(int x,int fa){
sum[x]=1;
for(int i=head[x];i;i=edge[i].next){
if(fa==edge[i].to){
continue;
}
dfs(edge[i].to,x);
sum[x]+=sum[edge[i].to];
ans+=edge[i].w*abs(2*sum[edge[i].to]-n);
}
}
int main(){
cin>>n;
for(int i=1;i<n;i++){
cin>>u>>v>>w;
add(u,v,w);
add(v,u,w);
}
dfs(1,0);
cout<<ans;
return 0;
}
哪错了?