H题解--“歌尔创客杯”第二届哈尔滨理工大学(荣成)程序设计竞赛

下棋

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

H 修建道路
最小生成树,模板题。
所有城市两两可达,最少边数为n-1,然后再保留一下加入边的最大权值就行。

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=10010;
struct node{
    int u,v,c;
}a[N];
int n,m,ans,fa[N];
bool cmp(node x,node y){return x.c<y.c;}//所有边按权值大到小排序
int find(int x){//并查集查找
    return fa[x]==x?x:fa[x]=find(fa[x]);
}
int main(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++) fa[i]=i;
    for(int i=1;i<=m;i++) scanf("%d%d%d",&a[i].u,&a[i].v,&a[i].c);
    sort(a+1,a+m+1,cmp);    
    for(int i=1,k=0;i<=m;i++){
        int fx=find(a[i].u),fy=find(a[i].v);
        if(fx!=fy){
            fa[fy]=fx;//并查集合并
            ans=max(ans,a[i].c);//更新最大权值
            if(++k==n-1) break;
        }
    }    
    printf("%d %d\n",n-1,ans);
    return 0;
}
全部评论

相关推荐

07-11 11:15
中南大学 Java
好可爱的hr姐姐哈哈哈哈
黑皮白袜臭脚体育生:兄弟们貂蝉在一起,吕布开了
点赞 评论 收藏
分享
Lorn的意义:你这种岗位在中国现在要么牛马天天加班,要么关系户进去好吃好喝,8年时间,真的天翻地覆了,对于资本来说你就说一头体力更好的牛马,哎,退伍没有包分配你真的亏了。
点赞 评论 收藏
分享
06-12 16:23
已编辑
小米_软件开发(准入职员工)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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