题目链接

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】最优布线问题相关推荐

  1. 信息学奥赛一本通(1266:【例9.10】机器分配)

    1266:[例9.10]机器分配 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 6867     通过数: 3370 [题目描述] 总公司拥有高效设备M台,准备分 ...

  2. 信息学奥赛一本通 2042:【例5.10】稀疏矩阵

    [题目链接] ybt 2042:[例5.10]稀疏矩阵 [题目考点] 1. 二维数组遍历 [题解代码] 解法1:设二维数组 设二维数组,输入二维数组,遍历二维数组,遇到不是0的元素,输出简记形式 #i ...

  3. 信息学奥赛一本通 2024:【例4.10】末两位数

    [题目链接] ybt 2024:[例4.10]末两位数 [题目考点] 1. 同余定理 根据同余定理,有: (a∗b)%m=(a%m∗b%m)%m(a*b)\%m = (a\%m * b\%m)\%m( ...

  4. 信息学奥赛一本通(2042:【例5.10】稀疏矩阵)

    2042:[例5.10]稀疏矩阵 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 513     通过数: 340 [题目描述] n×mn×m矩阵大部分元素是00的 ...

  5. 信息学奥赛一本通(2024:【例4.10】末两位数)

    2024:[例4.10]末两位数 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 1078     通过数: 584 [题目描述] 求nn个19921992的乘积的 ...

  6. 信息学奥赛一本通(c++):2024:【例4.10】末两位数

    一.题目 2024:[例4.10]末两位数 时间限制: 1000 ms         内存限制: 65536 KB [题目描述] 求n个1992的乘积的末两位数是多少? [输入] 输入n. [输出] ...

  7. 一本通2058:【例3.10】简单计算器

    2058:[例3.10]简单计算器 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 9991     通过数: 3545 [题目描述] 一个最简单的计算器支持+,- ...

  8. 信息学奥赛一本通:2024:【例4.10】末两位数

    2024:[例4.10]末两位数 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 20235     通过数: 11679 [题目描述] 求n个1992的乘积的末两 ...

  9. 1231 最优布线问题

    1231 最优布线问题 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description 学校需要将n台计算机连接起来,不同的2台计算机之间的连接 ...

最新文章

  1. 购物价值观(values of shopping)
  2. Oracle 10g如何对用户姓名,按首字母排序、查询
  3. Java消息中间件(activeMQ)
  4. boost::python::register_exception_translator相关的测试程序
  5. Mac上Java开发环境配置
  6. 基于jQuery的nyroModal模态对话框插件的使用,及IFrame方式窗口的关闭问题
  7. mysql 外键详解_mysql 中的外键key值的详解
  8. CassiniDev源码学习 - 可替代IIS的单机Web Form解决方案
  9. 6月全球垃圾邮件上升6.9% 以色列高居榜首
  10. 给radio添加点击事件
  11. jsp:param能不能传递变量_变量、作用域与内存
  12. python property使用
  13. 尚硅谷大数据hadoop教程
  14. steam好友服务器当前处于离线状态,steam好友在线为什么显示离线
  15. 梦想cms-v1.4-后台存在任意文件读取漏洞
  16. mysql union 慢_mysql查询慢的原因和解决方案
  17. win10 电脑蓝牙无法使用无法连接问题的一种神奇解决办法
  18. win8.1快捷操作集合
  19. 2022年版中国共享单车市场现状调研及投资前景预测报告
  20. mysql关闭空闲连接_终止空闲的mysql连接

热门文章

  1. 提升UI设计界面高级感的小技巧
  2. 前端学到什么程度可以找到工作?
  3. 老生常谈的一个问题,转行学习编程,是自学还是报班
  4. 前端学习入门,如何系统的学习前端?
  5. find5 android 4.3,OPPO Find 7的手机系统是什么?能升级安卓4.3吗?
  6. python可以做仿真吗agent_python agent应用
  7. android 上下收缩动画,Android 带有弹出收缩动画的扇形菜单实例
  8. java downloadfile_FileDownload.java:文件下载工具类
  9. c++设置一个二维字符组初值_6.8 C++字符数组
  10. SpringMVC用注解写第一个程序HelloSpringMVC