1231 最优布线问题

时间限制: 1 s
空间限制: 128000 KB
题目等级 : 白银 Silver

题目描述 Description

学校需要将n台计算机连接起来,不同的2台计算机之间的连接费用可能是不同的。为了节省费用,我们考虑采用间接数据传输结束,就是一台计算机可以间接地通过其他计算机实现和另外一台计算机连接。

为了使得任意两台计算机之间都是连通的(不管是直接还是间接的),需要在若干台计算机之间用网线直接连接,现在想使得总的连接费用最省,让你编程计算这个最小的费用。

输入描述 Input Description

输入第一行为两个整数n,m(2<=n<=100000,2<=m<=100000),表示计算机总数,和可以互相建立连接的连接个数。接下来m行,每行三个整数a,b,c 表示在机器a和机器b之间建立连接的话费是c。(题目保证一定存在可行的连通方案, 数据中可能存在权值不一样的重边,但是保证没有自环)

输出描述 Output Description

输出只有一行一个整数,表示最省的总连接费用。

样例输入 Sample Input

3 3

1 2 1

1 3 2

2 3 1

样例输出 Sample Output

2

数据范围及提示 Data Size & Hint

最终答案需要用long long类型来保存

水题 裸卡路丝卡尔

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 const int MAXN=300001;
 7 struct node
 8 {
 9     int u;
10     int v;
11     int w;
12 }edge[MAXN];
13 int num=1;
14 int father[MAXN];
15 int comp(const node & a,const node & b)
16 {
17     if(a.w<b.w)return 1;
18     else return 0;
19 }
20 int find(int x)
21 {
22     if(father[x]!=x)
23     father[x]=find(father[x]);
24     return father[x];
25 }
26 void unionn(int x,int y)
27 {
28     int fx=find(x);
29     int fy=find(y);
30     father[fx]=fy;
31 }
32 int main()
33 {
34     int n,m;
35     scanf("%d%d",&n,&m);
36     for(int i=1;i<=n;i++)father[i]=i;
37     for(int i=1;i<=m;i++)
38     {
39         scanf("%d%d%d",&edge[num].u,&edge[num].v,&edge[num].w);
40         num++;
41     }
42     sort(edge+1,edge+num,comp);
43     long long int k=0;
44     long long int tot=0;
45     for(int i=1;i<=num-1;i++)
46     {
47         if(find(edge[i].u)!=find(edge[i].v))
48         {
49             unionn(edge[i].u,edge[i].v);
50             tot=tot+edge[i].w;
51             k++;
52         }
53         if(k==n-1)break;
54     }
55     printf("%lld",tot);
56     return 0;
57 }

转载于:https://www.cnblogs.com/zwfymqz/p/6720130.html

1231 最优布线问题相关推荐

  1. codevs 1231 最优布线问题 x(find函数要从娃娃抓起系列)

    题目描述 Description 学校需要将n台计算机连接起来,不同的2台计算机之间的连接费用可能是不同的.为了节省费用,我们考虑采用间接数据传输结束,就是一台计算机可以间接地通过其他计算机实现和另外 ...

  2. 【prim】【最小生成树】最优布线问题(ssl 1612)

    最优布线问题 ssl 1612 题目大意: 求最小生成树 原题: 题目描述 学校有n台计算机,为了方便数据传输,现要将它们用数据线连接起来.两台计算机被连接是指它们之间有数据线连接.由于计算机所处的位 ...

  3. 最优布线问题(三种方法)

    最优布线问题 题目 学校有n台计算机,为了方便数据传输,现要将它们用数据线连接起来.两台计算机被连接是指它们之间有数据线连接.由于计算机所处的位置不同,因此不同的两台计算机的连接费用往往是不同的. 当 ...

  4. 最优布线问题 题解

    最优布线问题 题目 学校有 n n n 台计算机,为了方便数据传输,现要将它们用数据线连接起来.两台计算机被连接是指它们之间有数据线连接.由于计算机所处的位置不同,因此不同的两台计算机的连接费用往往是 ...

  5. 最小生成树(模板题:最优布线问题,繁忙的都市,联络员)(C++)

    文章目录 序言 正文 First Promble 最优布线问题 时间限制: 1000 m s 1000 ms 1000ms 空间限制: 262144 K B 262144 KB 262144KB 题目 ...

  6. 最优布线问题(克鲁斯卡尔)

    题意 学校有n台计算机,为了方便数据传输,现要将它们用数据线连接起来.两台计算机被连接是指它们之间有数据线连接.由于计算机所处的位置不同,因此不同的两台计算机的连接费用往往是不同的. 当然,如果将任意 ...

  7. 最优布线问题(普里姆算法)

    题意 学校有n台计算机,为了方便数据传输,现要将它们用数据线连接起来.两台计算机被连接是指它们之间有数据线连接.由于计算机所处的位置不同,因此不同的两台计算机的连接费用往往是不同的. 当然,如果将任意 ...

  8. 信息学奥赛一本通1349-最优布线问题

    [题目描述] 学校有n台计算机,为了方便数据传输,现要将它们用数据线连接起来.两台计算机被连接是指它们有数据线连接.由于计算机所处的位置不同,因此不同的两台计算机的连接费用往往是不同的. 当然,如果将 ...

  9. 最优布线问题(信息学奥赛一本通-T1349)

    [题目描述] 学校有n台计算机,为了方便数据传输,现要将它们用数据线连接起来.两台计算机被连接是指它们有数据线连接.由于计算机所处的位置不同,因此不同的两台计算机的连接费用往往是不同的. 当然,如果将 ...

最新文章

  1. 使用Python,OpenCV线程化方式提高视频FPS(每秒帧数)
  2. cannot import name 'InteractiveConsole'
  3. 【模型开发】风控评分模型开发流程
  4. windows 10安装gensim、nltk
  5. ITK:将颜色图应用于标签图并将其叠加在图像上
  6. The table(CF-226D)
  7. PLC状态机编程第六篇-优化PLC程序生成
  8. Linux 操作系统启动流程以及trouble shooting
  9. eclipse tomcat maven热部署
  10. spring-boot 加载本地静态资源文件路径配置
  11. matlab画圆函数
  12. 这么有料的福利,你还不赶紧关注一波吗?(代码合集)
  13. 新华象形大字典隐私用户数据声明
  14. 微信到 Obsidian 2.0
  15. wo-27s管理员账户和密码_获取电信天翼网关超级密码,修改路由模式为桥接模式...
  16. 隆重推荐:吴闲云 - 煮酒探西游
  17. JSON.stringify(value[, replacer [, space]])
  18. LAMP架构(基础篇)
  19. SIAL跻身世界三大食品展的成功哲学
  20. 德卡D3读卡器C#开发中的填坑记录

热门文章

  1. Vue页面加载使用二级属性的时候报错TypeError: Cannot read property ‘name‘ of undefined“
  2. 七个步骤,带你快速读懂 RPC 框架原理
  3. 什么是线程安全,你真的了解吗?
  4. 从神经元到CNN、RNN、GAN…神经网络看本文绝对够了
  5. TensorFlow Wide And Deep 模型详解与应用
  6. Thunk 函数的含义和用法
  7. CentOS、Ubuntu、Debian三个linux比较异同
  8. springBoot+springSecurity 数据库动态管理用户、角色、权限(二)
  9. centos下yum安装nginx
  10. 快速排序算法_常用排序算法之快速排序