题目描述

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

输入

输入数据包括城镇数目正整数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

思路:本题就是求最小生成树,目前只会Prim算法。。。

code:

/*prim算法:(最小生成树)两个集合S和V-S,依次将V-S中距离S最小的元素放入S中,直到V-S元素个数为0;*/
#include <bits/stdc++.h>
using namespace std;
const int N = 1000 + 5;
const int inf = 0x3f3f3f3f;
typedef long long ll;int dis[N];//记录每个点到已选中集合的最小距离
bool vis[N];//vis[i]记录元素i是否在集合S中
int d[N][N];//d[i][j]记录i到j的距离
int n, m; //村庄个数
int prim() { //计算最小生成树memset(vis, 0, sizeof(vis)); //初始化元素全不在S中memset(dis, 0x3f, sizeof dis);int res = 0;for (int i = 0; i < n; i++) { //一共有n次操作将元素放入S中int t = -1;for (int j = 1; j <= n; j++) {if (!vis[j] && (t == -1 || dis[j] < dis[t])) //V-S中寻找距离S最小的元素(第一次操作选择第一个元素)t = j;}if (i != 0 && dis[t] == inf)return inf;//最小距离为inf,说明V-S中元素与S中元素均未通路if (i != 0)res += dis[t]; //最小生成树长度加上最短距离for (int j = 1; j <= n; j++) {dis[j] = min(dis[j], d[j][t]);}vis[t] = true;//cout << t << " " << res << endl;}return res;
}int main() {cin >> n;cin >> m;memset(d, 0x3f, sizeof(d)); //初始化距离为无穷大
//  for (int i = 0; i <= n; i++)
//      d[i][i] = 0;while (m--) {int a, b, c;cin >> a >> b >> c;d[a][b] = d[b][a] = min(d[a][b], c);}int ans = prim();if (ans == inf)cout << "-1" << endl;elsecout << ans << endl;
}

公路村村通——求最小生成树相关推荐

  1. 7-10 公路村村通 (最小生成树Prim算法) | PTA数据结构与算法——C语言实现

    公路村村通 非常直白的最小生成树问题. 原题链接:PTA | 程序设计类实验辅助教学平台 题目描述 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通 ...

  2. 7-5 公路村村通 (30 分)(C语言实现)

    现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N) ...

  3. 08-图7 公路村村通(浙大数据结构)

    中国大学MOOC-陈越.何钦铭-数据结构-2022夏 08-图7 公路村村通 分数 30 作者 陈越 单位 浙江大学 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每 ...

  4. 06-图6. 公路村村通(30)

    06-图6. 公路村村通(30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的 ...

  5. 浙大数据结构:08-图7 公路村村通 (30 分)Prim与Kruskal算法

    08-图7 公路村村通 (30 分) 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括城镇数目正整数N( ...

  6. PTA_21_08_图7 _公路村村通

    PTA_21_08_图7 _公路村村通 题目描述 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式 输入数据包括城镇数目 ...

  7. PTA 公路村村通 (30 分)

    7-3 公路村村通 (30 分) 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括城镇数目正整数N(≤1 ...

  8. 06-3. 公路村村通(30)

    06-3. 公路村村通(30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若 ...

  9. 5-10 公路村村通 (30分)

    5-10 公路村村通 (30分) 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括城镇数目正整数N( ≤ ...

最新文章

  1. Linux 之alias 命令别名
  2. Python-Day3-数据类型
  3. WINCE6.0 chain.bin和xipkernel.bin解析
  4. Linux查看端口使用状态及启动
  5. 简单的python流回显服务器与客户端
  6. MATLAB字符数组和空数组
  7. Python求解多元非线性方程组
  8. vs2015项目导出为Qt项目
  9. JNDI 笔记(转)
  10. Asp.net Core 打包发布 (Linux+Nginx)
  11. 数据库之“on”“where”区别
  12. iOS开发证书要点详解
  13. 1.6.PHP7.1 狐教程-【版本库客户端 git SourceTree安装配置使用】
  14. linux pwm 调屏_linux驱动---bl_pwm驱动与backlight class实现背光调整
  15. mysql 中文手册 pdf_Mysql8.0中文参考手册 中英文chm+pdf版
  16. 增值税发票综合服务平台常见问题解决方法(珍藏版)
  17. python写的一个王者荣耀刷金币脚本
  18. 宣传单印刷价格明细报价的影响因素有哪些?
  19. Word文档进行XXE攻击
  20. AcrelCloud-9500电瓶车充电桩收费平台在公共场所中的应用

热门文章

  1. 【回溯算法】LeetCode的1024活动快速合成1024硬币攻略
  2. Office2016 PPT中视频或全景(swf)嵌入、交互、播放及相关工具配置方法
  3. 使用RDM将redis的数据导出
  4. Linux查看日志和关闭、杀死进程命令
  5. 【即时通信】openfire安装和配置讲解
  6. 强化学习经典视频教程总结
  7. system32下的文件
  8. 【微信小程序】分享接口卡片图片尺寸比例
  9. 翻页时钟java代码_Android编程基于自定义控件实现时钟功能的方法
  10. java 魔方_2 java实现4阶魔方,通过运行代码,鼠标进行旋转,可以模拟 游戏 Develop 246万源代码下载- www.pudn.com...