nyoj------布线问题(kruscal+求最小值)
时间:2022-05-05
本文章向大家介绍nyoj------布线问题(kruscal+求最小值),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
布线问题
时间限制:1000 ms | 内存限制:65535 KB
难度:4
描述南阳理工学院要进行用电线路改造,现在校长要求设计师设计出一种布线方式,该布线方式需要满足以下条件:
1、把所有的楼都供上电。
2、所用电线花费最少
输入第一行是一个整数n表示有n组测试数据。(n<5)
每组测试数据的第一行是两个整数v,e.
v表示学校里楼的总个数(v<=500)
随后的e行里,每行有三个整数a,b,c表示a与b之间如果建铺设线路花费为c(c<=100)。(哪两栋楼间如果没有指明花费,则表示这两栋楼直接连通需要费用太大或者不可能连通)
随后的1行里,有v个整数,其中第i个数表示从第i号楼接线到外界供电设施所需要的费用。( 0<e<v*(v-1)/2 )
(楼的编号从1开始),由于安全问题,只能选择一个楼连接到外界供电设备。
数据保证至少存在一种方案满足要求。输出每组测试数据输出一个正整数,表示铺设满足校长要求的线路的最小花费。样例输入
1
4 6
1 2 10
2 3 10
3 1 10
1 4 1
2 4 1
3 4 1
1 3 5 6
样例输出
4
来源[张云聪]原创上传者张云聪基础题型.....一个字 水代码:
1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #include<cstdlib>
5 #include<algorithm>
6 using namespace std;
7 const int maxn=500;
8
9 int father[maxn]; //根
10 int rank[maxn]; //秩
11 int n,v,e;
12
13 struct luo{
14 int from;
15 int to;
16 int val;
17 }str[125000];
18 bool operator < (const luo &a ,const luo &b)
19 {
20 return a.val<b.val; //采用从小到大的顺序排列
21 }
22 void init()
23 {
24 int i;
25 for( i=1; i<=maxn ;i++){
26 father[i]=i;
27 rank[i]=1;
28 }
29 }
30
31 int setfind(int x)
32 {
33 while(x!=father[x])
34 x=father[x];
35 return x;
36 }
37
38 void setunion(int aa,int bb)
39 {
40 if(rank[aa]>rank[bb]){
41 father[bb]=aa;
42 rank[aa]+=rank[bb];
43 }
44 else{
45 father[aa]=bb;
46 rank[bb]+=rank[aa];
47 }
48 }
49
50 int main()
51 {
52 int n,v,e,i;
53 scanf("%d",&n);
54 while(n--)
55 {
56 scanf("%d%d",&v,&e);
57 for(i=0;i<e ;i++)
58 scanf("%d%d%d",&str[i].from,&str[i].to,&str[i].val);
59 sort(str,str+e);
60 int aa,bb,ans;
61 ans=0;
62 init(); //初始化
63 for(i=0;i<e ;i++)
64 {
65 aa=setfind(str[i].from);
66 bb=setfind(str[i].to);
67 if(aa!=bb){
68 ans+=str[i].val;
69 setunion(aa,bb);
70 }
71 }
72 int minc=0x3f3f3f3f,tem;
73 for(i=0;i<v;i++)
74 {
75 scanf("%d",&tem);
76 if(tem<minc)minc=tem;
77 }
78 printf("%dn",ans+minc);
79 }
80 return 0;
81 }
- 图片和视频防盗链简单介绍
- 对比cp和scp命令 将数据从一台linux服务器复制到另一台linux服务器
- laravel—用Migration的操作数据库
- 有货移动Web端性能优化探索实践
- webpack打包速度和性能再次优化
- MySQL 清除表空间碎片
- 解决ios不支持按钮:active伪类的方法
- HTTP-FLV直播初探
- BZOJ1058: [ZJOI2007]报表统计
- React数据流和组件间的通信总结
- react+redux+webpack教程4
- 洛谷P2391 白雪皑皑(并查集)
- BZOJ4514: [Sdoi2016]数字配对(费用流)
- 3.2数据结构之指针和链表 1748:约瑟夫问题
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【Vulnhub】Tr0ll:2
- 看到一个不错的前端面试题开源项目
- PWN:UnsortedBin Attack
- React、TypeScript、NodeJS 和 MongoDB 搭建 Todo App
- 我想new个对象过七夕,她却抛了异常···
- 在开启了CloudFlare的页面中显示当前节点信息
- MySQL 案例:无主键表引发的同步延迟
- 进入编译器后,一个函数经历了什么?
- Cloudflare中firewall的编写方法
- LeetCode 11盛水最多的容器&12整数转罗马数字
- 刷题一个4ms的程序,代码如何优化到3ms再到2ms?
- 【LeetCode】1. 盛最多水的容器:C#三种解法
- .NET core3.1使用cookie进行身份认证
- User-Agent那些事
- 三分钟Docker-推送本地镜像到仓库