2020牛客国庆集训派对day2 D

EXPLORACE

https://ac.nowcoder.com/acm/contest/7818/D

题意

求一棵最小生成树。

分析

就只是单纯的求一个最小生成树。

代码

#include<bits/stdc++.h>
using namespace std;
const int N = 510*510;
#define LL long long
const int inf = 0x3f3f3f3f;
int read() {
    int x = 0,f = 0;char ch = getchar();
    while(!isdigit(ch)) {if(ch=='-')f=1;ch = getchar();}
    while(isdigit(ch)) {x = x * 10 + ch - '0';ch = getchar();}
    return f?-x:x;
}
int fa[N],num=0;
struct Edge{int u,v,w;}e[N];
int find(int x){return fa[x]==x?x:fa[x]=find(fa[x]);}
bool cmp(Edge a,Edge b) {return a.w<b.w;}
int main() {
    int T=read();
    while(T--){
        int n=read(),m=read();
        for(int i=0;i<=n;i++)fa[i]=i;
        for(int i=1;i<=m;i++){
            e[i].u=read();e[i].v=read();e[i].w=read();
        }
        sort(e+1,e+1+m,cmp);
        for(int i=1;i<=m;i++){
            if(find(e[i].v)==find(e[i].u))continue;
            fa[find(e[i].v)]=find(e[i].u);
            fa[0]+=e[i].w;
        }
        cout<<"Case #"<<++num<<": "<<fa[0]<<" meters"<<endl;
    }
}
比赛题解 文章被收录于专栏

近期比赛的题解应该有吧。。。

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 15:08
点赞 评论 收藏
分享
不要停下啊:大二打开牛客,你有机会开卷了,卷起来,去找课程学习,在牛客上看看大家面试笔试都需要会什么,岗位有什么需求就去学什么,努力的人就一定会有收获,这句话从来都经得起考验,像我现在大三了啥也不会,被迫强行考研,炼狱难度开局,啥也不会,找工作没希望了,考研有丝丝机会
点赞 评论 收藏
分享
评论
5
收藏
分享

创作者周榜

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