程序设计:建立联系

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct st
{
    ll u,v,w;
} b[1000001];
bool cmp(st a,st b)
{
    return a.w<b.w;
}
ll a[1010001];
ll Find(ll x)
{
    if(a[x]==x)
        return x;
    else return a[x]=Find(a[x]);
}
int main()
{
    ll n,m,k;
    cin>>n>>m>>k;
    for(ll i=1; i<=n; i++)
        a[i]=i;
    for(ll i=1; i<=m; i++)
    {
        cin>>b[i].u>>b[i].v>>b[i].w;
    }
    sort(b+1,b+1+m,cmp);
    ll ans=0;
    ll index=0;
    for(ll i=1; i<=m; i++)
    {
        ll u=b[i].u;
        ll v=b[i].v;
        ll w=b[i].w;
       ll fu=Find(u);
       ll fv=Find(v);
        if(fu==fv)
            continue;
        a[fv]=a[fu];
        ans+=w;
        index++;
        if(index==n-k)
            break;
    }
    cout<<ans<<endl;
    return 0;
}
发布了1317 篇原创文章 · 获赞 329 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/chen_zan_yu_/article/details/105282218