7-10 公路村村通(并查集kruskal)

7-10 公路村村通(并查集kruskal)最小生成树题目链接现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。输入格式:输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。输出格式:输出村村通需要的最低成本。如果输入数据不足以保证畅通,则输出−1,表示需要建设更多公路。输入样例:6 151 2 51 3 3

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

最小生成树

题目链接

现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。

输入格式:
输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。

输出格式:
输出村村通需要的最低成本。如果输入数据不足以保证畅通,则输出−1,表示需要建设更多公路。

输入样例:

6 15
1 2 5
1 3 3
1 4 7
1 5 4
1 6 2
2 3 4
2 4 6
2 5 2
2 6 6
3 4 6
3 5 1
3 6 1
4 5 10
4 6 8
5 6 3

输出样例:

12

C++代码

#include<bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef long long ll;
const int N = 1e3 + 10;
const int M = 3 * N;
const int INF = 0x3f3f3f3f;
typedef pair<int,int> PII;
struct Edge{ 
   
    int u,v,w;
    bool operator<(const Edge &edge)const{ 
   
        return w < edge.w;
    }
}edge[M];
int fa[N],n,m;
void init(){ 
   
    for(int i = 0;i < n;i ++)fa[i] = i;
}
int Find(int x){ 
   
    return fa[x] = (x == fa[x] ? x : Find(fa[x]));	//压缩路径并查集
}
int main(){ 
   
    cin>>n>>m;
    init();
    int x,y,w;
    for(int i = 0;i < m;i ++){ 
   
        cin>>x>>y>>w;
        edge[i].u = x;
        edge[i].v = y;
        edge[i].w = w;
    }
    sort(edge,edge + m);
    int res = 0,cnt = 0;
    for(int i = 0;i < m;i ++){ 
   
        int X = Find(edge[i].u),Y = Find(edge[i].v);
        if(X != Y){ 
   
            fa[X] = Y;
            res += edge[i].w;
            cnt ++;
        }
    }
    if(cnt != n - 1)cout<< -1;
    else cout<<res;
    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168794.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java中Set集合的遍历及实现类比较分析

    java中Set集合的遍历及实现类比较分析java中Set集合是一个不包含重复元素的Collection,首先我们先看看遍历方法packagecom.sort;importjava.util.HashSet;importjava.util.Iterator;importjava.util.Set;/***一个不包含重复元素的collection。更确切地讲,set不包含满足e1.equals(e2)的

    2022年5月29日
  • i2c接口可以接哪些器件_单片机i2c接口

    i2c接口可以接哪些器件_单片机i2c接口高通项目在lk阶段配置I2C6作充电接口

    2022年10月19日
  • Navicat连接MySQL失败1251

    Navicat连接MySQL失败1251错误提示:1251-Clientdoesnotsupportauthenticationprotocolrequestedbyserver;considerupgradingMySQLclient原因:MySQL8版本以上采用新的加密方式,旧的不能用解决办法:更改MySQL的加密方式ALTERUSER’root’@’localhost’IDENTIFIE…

    2022年10月14日
  • vue父子组件传值方法_vue父组件向子组件传递对象

    vue父子组件传值方法_vue父组件向子组件传递对象前言在业务场景中经常会遇到子组件向父组件传递数值,或是父组件向子组件传递数值,下面将结合vue富文本框一起来了解一下父与子组件之间的传值业务场景在vue项目中创建了一个可以重复使用的富文本编辑器(可参考【vue】vue富文本编辑器(可重复使用组件)vue-quill-editor),由于是新闻编辑页面,首先需要把已经保存好的新闻内容展示在富文本编辑器中(父组件向子组件传值),其次需要把更新后的新闻内容保存到数据库中(子组件向父组件传值)父组件向子组件传值(v-bind:child.

    2022年9月5日
  • 【转载】谢孟媛_初级英文文法_讲义!全!!

    【转载】谢孟媛_初级英文文法_讲义!全!!初级英文文法ⅠUnit1名词、冠词———————1名词的种类名词的数名词的所有格冠词Unit2be动词、一般动词的现在式——————–

    2022年7月1日
  • 详解 JVM Garbage First(G1) 垃圾收集器

    详解 JVM Garbage First(G1) 垃圾收集器版权声明:本文为博主原创文章,转载请联系作者并注明出处。详解JVMGarbageFirst(G1)垃圾收集器前言GarbageFirst(G1)是垃圾收集领域的最新成果,同时也是HotSpot在JVM上力推的垃圾收集器,并赋予取代CMS的使命。如果使用Java8/9,那么有很大可能希望对G1收集器进行评估。本文详细首先对JVM其他的垃圾收集器进行总结,并与G1进

    2022年6月13日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号