1 条题解

  • 0
    @ 2026-10-25 22:04:21

    思路

    唯一MST的非树边权必须严格大于树路径最大边;整数权取最大边加1最小,按树边排序合并分量统计每对顶点贡献,不能把严格不等误写成大于等于;n十万总和用64位。

    参考程序(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    int main(){ios::sync_with_stdio(false);cin.tie(nullptr);int n;cin>>n;vector<tuple<int,int,int>>e;for(int i=1;i<n;i++){int u,v,w;cin>>u>>v>>w;e.push_back({w,u-1,v-1});}sort(e.begin(),e.end());vector<int>p(n),sz(n,1);iota(p.begin(),p.end(),0);function<int(int)>find=[&](int x){return p[x]==x?x:p[x]=find(p[x]);};long long ans=0;for(auto t:e){int w,u,v;tie(w,u,v)=t;u=find(u);v=find(v);ans+=(w+1LL)*sz[u]*sz[v]-1;if(sz[u]<sz[v])swap(u,v);p[v]=u;sz[u]+=sz[v];}cout<<ans<<'\n';}
    
    • 1

    信息

    ID
    1547
    时间
    1000ms
    内存
    64MiB
    难度
    提高
    标签
    递交数
    1
    已通过
    1
    上传者