rt.
定义常量时使用const int就会炸
使用#define 就没事
#include<bits/stdc++.h>
#define N 100005
#define int long long
using namespace std;
int sz[N],fa[N],n,ans;
int find(int x){
if(fa[x]==x) return x;
return fa[x]=find(fa[x]);
}
struct node{
int u,v,w;
}e[N];
signed main(){
cin>>n;
for(int i=1;i<=n;i++){
fa[i]=i;
sz[i]=1;
}
for(int i=1;i<n;i++)cin>>e[i].u>>e[i].v>>e[i].w;
sort(e+1,e+n,[](node x,node y){return x.w<y.w;});
for(int i=1;i<n;i++){
int x=find(e[i].u),y=find(e[i].v);
ans+=sz[x]*sz[y]*e[i].w;
if(x==y)continue;
fa[y]=x;
sz[x]+=sz[y];
}
cout<<ans;
return 0;
}
AC.
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+5;
int sz[N],fa[N],n,ans;
int find(int x){
if(fa[x]==x) return x;
return fa[x]=find(fa[x]);
}
struct node{
int u,v,w;
}e[N];
signed main(){
cin>>n;
for(int i=1;i<=n;i++){
fa[i]=i;
sz[i]=1;
}
for(int i=1;i<n;i++)cin>>e[i].u>>e[i].v>>e[i].w;
sort(e+1,e+n,[](node x,node y){return x.w<y.w;});
for(int i=1;i<n;i++){
int x=find(e[i].u),y=find(e[i].v);
ans+=sz[x]*sz[y]*e[i].w;
if(x==y)continue;
fa[y]=x;
sz[x]+=sz[y];
}
cout<<ans;
return 0;
}
zero.