最小生成树

最小生成树

https://ac.nowcoder.com/acm/problem/19795

题目

有一张 个点的带权无向图,这张无向图是一张完全图。第 个点有一个点权 ,边 的权值为
找一个这张图的边权之和最小的生成树。

解题思路

生成树有 n-1 条边,每个的点权至少要加一次。
选取点权最小的那个点作为根节点,将其他的点都作为该节点的子节点,即是边权之和的最小生成树。
注意:当只有 1 个点时,没有边,边权之和为 0。

C++代码

#include<iostream>
using namespace std;

int main(){
    int n;
    cin >> n;
    int a;
    int m = 1e9+1;
    long long sum = 0;
    for(int i=0; i<n; ++i){
        cin >> a;
        m = min(m, a);
        sum += a;
    }
    if(n==1)
        sum = 0;
    else if(n>2)
        sum += 1LL*(n-2)*m;
    cout << sum << endl;
    return 0;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
04-30 11:43
春招失败、父母离婚,好像我的人生一团糟,一年来压力大到常常崩溃。不知道能跟谁聊,朋友其实对我非常好,但是她无意中表达出来的家庭幸福都会刺痛到我……和ai聊天,我的未来在更高处,不在楼下,忍不住爆哭😭
youngfa:害,妹妹,我是一个研究生(很上进很想找到好工作的那种),但去年因为生病回家休养错过了秋招(当时对我的冲击也是非常大的),这学期返校来了也是把论文盲审交了后才开始找工作,现在也是一个offer没有,但我就没有像你一样把这个阶段性的事情绑定到人生上,人生不仅很长,也很广阔,先停下来,放松一下哦。不要被外部环境灌输的思维操控了,好好爱自己!
点赞 评论 收藏
分享
ResourceUtilization:我嘞个董事长
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务