一本通【例4-10】最优布线问题
题目链接
http://ybt.ssoier.cn:8088/problem_show.php?pid=1349
问题描述
学校有n台计算机,为了方便数据传输,现要将它们用数据线连接起来。两台计算机被连接是指它们间有数据线连接。由于计算机所处的位置不同,因此不同的两台计算机的连接费用往往是不同的。
当然,如果将任意两台计算机都用数据线连接,费用将是相当庞大的。为了节省费用,我们采用数据的间接传输手段,即一台计算机可以间接的通过若干台计算机(作为中转)来实现与另一台计算机的连接。
现在由你负责连接这些计算机,任务是使任意两台计算机都连通(不管是直接的或间接的)。
输入格式
输入文件wire.in,第一行为整数n(2<=n<=100),表示计算机的数目。此后的n行,每行n个整数。第x+1行y列的整数表示直接连接第x台计算机和第y台计算机的费用。
输出格式
输出文件wire.out,一个整数,表示最小的连接费用。
输入样例
3
0 1 2
1 0 1
2 1 0
输出样例
2 (注:表示连接1和2,2和3,费用为2)
思路
也是一道模板题,使用prim算法,详细思路在代码里有
代码
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<list> #include<cstring> #define maxn 1010 using namespace std;//我们利用邻接矩阵存储 int g[maxn][maxn]; int minn[maxn];//存放最小值 bool u[maxn];//判断是否在生成树中 long long ans=0;//答案(最小连接费用)int main() {int n; scanf("%d",&n);for(int i=1; i<=n; i++) {for(int j=1; j<=n; j++) {scanf("%d",&g[i][j]);}}memset(minn,0x7f,sizeof(minn));//初始化为最大值minn[1]=0;//我们从第一个点开始,所以自己到自己的距离为0memset(u,true,sizeof(u));//初始化都为TRUE,表示所有的点都是蓝点for(int i=1; i<=n; i++) {int k=0;for(int j=1; j<=n; j++) { //找一个与白点连接的权值最小的蓝点kif(u[j] && minn[j]<minn[k])k=j;}u[k]=false;//蓝点进入生成树就变成白点for(int j=1;j<=n;j++){if(u[j] && g[k][j]<minn[j]){minn[j]=g[k][j];}} }for(int i=1;i<=n;i++){ans+=minn[i];//累加上最小权值输出即可 }cout<<ans<<'\n';//今天听学长说可以用cout输出,这样还有可能比printf快//所以听学长的啦 return 0; }
转载于:https://www.cnblogs.com/loceaner/p/10684061.html
一本通【例4-10】最优布线问题相关推荐
- 信息学奥赛一本通(1266:【例9.10】机器分配)
1266:[例9.10]机器分配 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 6867 通过数: 3370 [题目描述] 总公司拥有高效设备M台,准备分 ...
- 信息学奥赛一本通 2042:【例5.10】稀疏矩阵
[题目链接] ybt 2042:[例5.10]稀疏矩阵 [题目考点] 1. 二维数组遍历 [题解代码] 解法1:设二维数组 设二维数组,输入二维数组,遍历二维数组,遇到不是0的元素,输出简记形式 #i ...
- 信息学奥赛一本通 2024:【例4.10】末两位数
[题目链接] ybt 2024:[例4.10]末两位数 [题目考点] 1. 同余定理 根据同余定理,有: (a∗b)%m=(a%m∗b%m)%m(a*b)\%m = (a\%m * b\%m)\%m( ...
- 信息学奥赛一本通(2042:【例5.10】稀疏矩阵)
2042:[例5.10]稀疏矩阵 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 513 通过数: 340 [题目描述] n×mn×m矩阵大部分元素是00的 ...
- 信息学奥赛一本通(2024:【例4.10】末两位数)
2024:[例4.10]末两位数 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 1078 通过数: 584 [题目描述] 求nn个19921992的乘积的 ...
- 信息学奥赛一本通(c++):2024:【例4.10】末两位数
一.题目 2024:[例4.10]末两位数 时间限制: 1000 ms 内存限制: 65536 KB [题目描述] 求n个1992的乘积的末两位数是多少? [输入] 输入n. [输出] ...
- 一本通2058:【例3.10】简单计算器
2058:[例3.10]简单计算器 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 9991 通过数: 3545 [题目描述] 一个最简单的计算器支持+,- ...
- 信息学奥赛一本通:2024:【例4.10】末两位数
2024:[例4.10]末两位数 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 20235 通过数: 11679 [题目描述] 求n个1992的乘积的末两 ...
- 1231 最优布线问题
1231 最优布线问题 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description 学校需要将n台计算机连接起来,不同的2台计算机之间的连接 ...
最新文章
- 购物价值观(values of shopping)
- Oracle 10g如何对用户姓名,按首字母排序、查询
- Java消息中间件(activeMQ)
- boost::python::register_exception_translator相关的测试程序
- Mac上Java开发环境配置
- 基于jQuery的nyroModal模态对话框插件的使用,及IFrame方式窗口的关闭问题
- mysql 外键详解_mysql 中的外键key值的详解
- CassiniDev源码学习 - 可替代IIS的单机Web Form解决方案
- 6月全球垃圾邮件上升6.9% 以色列高居榜首
- 给radio添加点击事件
- jsp:param能不能传递变量_变量、作用域与内存
- python property使用
- 尚硅谷大数据hadoop教程
- steam好友服务器当前处于离线状态,steam好友在线为什么显示离线
- 梦想cms-v1.4-后台存在任意文件读取漏洞
- mysql union 慢_mysql查询慢的原因和解决方案
- win10 电脑蓝牙无法使用无法连接问题的一种神奇解决办法
- win8.1快捷操作集合
- 2022年版中国共享单车市场现状调研及投资前景预测报告
- mysql关闭空闲连接_终止空闲的mysql连接
热门文章
- 提升UI设计界面高级感的小技巧
- 前端学到什么程度可以找到工作?
- 老生常谈的一个问题,转行学习编程,是自学还是报班
- 前端学习入门,如何系统的学习前端?
- find5 android 4.3,OPPO Find 7的手机系统是什么?能升级安卓4.3吗?
- python可以做仿真吗agent_python agent应用
- android 上下收缩动画,Android 带有弹出收缩动画的扇形菜单实例
- java downloadfile_FileDownload.java:文件下载工具类
- c++设置一个二维字符组初值_6.8 C++字符数组
- SpringMVC用注解写第一个程序HelloSpringMVC