最小生成树

最小生成树

https://ac.nowcoder.com/acm/contest/6173/A

最小生成树

题目描述

小 A 有一张 n 个点的带权无向图,这张无向图非常特别,首先第 i 个点有一个点权 ai,之后这张无向图是一张完全图,且边 (u,v) 的权值为 au+av
现在小 A 想找一个这张图的边权之和最小的生成树,需要你来帮帮他

可以用prim算法跑出来最小生成树,但是仔细想可以用贪心的思路:

将点权从小到大排序,a[1]和其他各点连接就是最小生成树

#pragma GCC optimize (3)
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define js ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
ll a[100005];
int main(){
    js;
    ll n;
    cin>>n;
    ll sum=0;
    ll Min=1e18;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        sum+=a[i];
        Min=min(Min,a[i]);
    } 
    cout<<(n-1)*Min+sum-Min;


}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-25 17:51
点赞 评论 收藏
分享
07-07 17:06
已编辑
深圳技术大学 golang
点赞 评论 收藏
分享
LazyBreeze:项目尽量体现你对技术的理解和深度,不是说把中间件用一下就完事了,你项目里面提到集群和分布式,你真在服务器上部署过吗,感觉太假了,第二个项目说自己用了微服务的什么组件,只是用了没有自己的思考,很难让面试官注意到你的简历。针对某几个技术点自己多思考一下,考虑一下有没有别的替代方案,可以写一下,即使没有真的实现
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 12:06
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务