2 条题解
-
0240116zj钱宸熹 (230908zj) LV 7 @ 2023-10-30 19:38:52
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#define N 10010
using namespace std;
int s[N],fa[N];
struct node{
int x,y,val;
}g[N];
bool operator<(node a,node b){
return a.val<b.val;
}
int get(int x)
{
if(fa[x]==x) return x;
return fa[x]=get(fa[x]);
}
int main()
{
int t;
cin>>t;
while(t--)
{
memset(s,0,sizeof(s));
memset(fa,0,sizeof(fa));
int n;
scanf("%d",&n);
for(int i=1;i<n;i++)
scanf("%d%d%d",&g[i].x,&g[i].y,&g[i].val);
for(int i=1;i<=n;i++) fa[i]=i,s[i]=1;
sort(g+1,g+n);
int ans=0;
for(int i=1;i<n;i++){
int x=get(g[i].x),y=get(g[i].y),val=g[i].val;
if(x==y) continue;
fa[x]=y;
ans+=(long long)(val+1)*(s[x]*s[y]-1);
s[y]+=s[x];
}
cout<<ans<<endl;
}
return 0;
} -
02021-10-25 21:08:30@
这题最小生成树
蓝书上有
- 1
信息
- ID
- 1023
- 难度
- 9
- 分类
- (无)
- 标签
- 递交数
- 4
- 已通过
- 2
- 通过率
- 50%
- 被复制
- 2
- 上传者