2 条题解

  • 0
    @ 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;
    }

  • 0
    @ 2021-10-25 21:08:30

    这题最小生成树
    蓝书上有

  • 1

信息

ID
1023
难度
9
分类
(无)
标签
递交数
4
已通过
2
通过率
50%
被复制
2
上传者