1 条题解
-
0

#include<bits/stdc++.h> using namespace std; typedef long long LL; const int N=1e5+10; struct node{int x, y, c;} a[N]; bool cmp(node n1, node n2) {return n1.c < n2.c;} int f[N], s[N]; int findfa(int x) {return (f[x]==x)? f[x]: f[x]=findfa(f[x]);} int main() { int n; scanf("%d", &n); for(int i=1; i<=n; i++) f[i]=i, s[i]=1; for(int i=1; i<n; i++)scanf("%d%d%d", &a[i].x, &a[i].y, &a[i].c); sort(a+1, a+n, cmp); LL ans=0; for(int i=1; i<n; i++) { int x=a[i].x, y=a[i].y; int tx=findfa(x), ty=findfa(y); ans=ans+(LL)(s[tx]*s[ty]-1)*(a[i].c+1)+a[i].c; f[tx]=ty; s[ty]+=s[tx]; } printf("%lld\n", ans); return 0; }
- 1
信息
- ID
- 1876
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 7
- 标签
- 递交数
- 24
- 已通过
- 8
- 上传者