题目链接

给你一个points 数组,表示 2D 平面上的一些点,其中 points[i] = [xi, yi] 。

连接点 [xi, yi] 和点 [xj, yj] 的费用为它们之间的 曼哈顿距离 :|xi - xj| + |yi - yj| ,其中 |val| 表示 val 的绝对值。

请你返回将所有点连接的最小总费用。只有任意两点之间 有且仅有 一条简单路径时,才认为所有点都已连接。

示例 1:

输入:points = [[0,0],[2,2],[3,10],[5,2],[7,0]]
输出:20

解释:

我们可以按照上图所示连接所有点得到最小总费用,总费用为 20 。
注意到任意两个点之间只有唯一一条路径互相到达。

示例 2:

输入:points = [[3,12],[-2,5],[-4,1]]
输出:18

示例 3:

输入:points = [[0,0],[1,1],[1,0],[-1,1]]
输出:4

示例 4:

输入:points = [[-1000000,-1000000],[1000000,1000000]]
输出:4000000

示例 5:

输入:points = [[0,0]]
输出:0

最小生成树模板,建图后套一个 prim 算法即可,AC代码如下:

class Solution {public:int d[1005], vis[1005], g[1005][1005];unordered_map<int, vector<int>> mp;int dis(vector<int> &a, vector<int> &b) {return abs(a[0] - b[0]) + abs(a[1] - b[1]);}void build(int n) {for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {g[i][j] = dis(mp[i], mp[j]);}}}int prim(int n) {fill(d, d + 1005, 1e9);d[0] = 0;int ans = 0;for (int i = 0; i < n; i++) {int u = -1, MIN = 1e9;for (int j = 0; j < n; j++) {if (!vis[j] && d[j] < MIN) {u = j;MIN = d[j];}}if (u == -1) return -1;vis[u] = 1;ans += d[u];for (int v = 0; v < n; v++) {if (g[u][v] < d[v] && !vis[v] && g[u][v] != 1e9) d[v] = g[u][v];}}return ans;}int minCostConnectPoints(vector <vector<int>> &points) {int n = points.size();for (int i = 0; i < n; i++) mp[i] = points[i];build(n);return prim(n);}
};

LeetCode 1584 连接所有点的最小费用相关推荐

  1. leetcode 1584. 连接所有点的最小费用(并查集)

    给你一个points 数组,表示 2D 平面上的一些点,其中 points[i] = [xi, yi] . 连接点 [xi, yi] 和点 [xj, yj] 的费用为它们之间的 曼哈顿距离 :|xi ...

  2. LeetCode 每日一题1584. 连接所有点的最小费用

    1584. 连接所有点的最小费用 给你一个points 数组,表示 2D 平面上的一些点,其中 points[i] = [xi, yi] . 连接点 [xi, yi] 和点 [xj, yj] 的费用为 ...

  3. 1584.连接所有点的最小费用(Kruskal算法) | 1697. 检查边长度限制的路径是否存在(并查集)

    给你一个points 数组,表示 2D 平面上的一些点,其中 points[i] = [xi, yi] . 连接点 [xi, yi] 和点 [xj, yj] 的费用为它们之间的 曼哈顿距离 :|xi ...

  4. LC1584. 连接所有点的最小费用

    Kruskal 最小生成树算法 def minCostConnectPoints(self, points):""":type points: List[List[int ...

  5. 乌鲁木齐网络赛J题(最小费用最大流模板)

    ACM ICPC 乌鲁木齐网络赛 J. Our Journey of Dalian Ends 2017-09-09 17:24 243人阅读 评论(0) 收藏 举报  分类: 网络流(33)  版权声 ...

  6. c语言最小费用流_策略算法工程师之路-图优化算法(一)(二分图amp;最小费用最大流)...

    目录 1.图的基本定义 2.双边匹配问题 2.1 二分图基本概念 2.2 二分图最大匹配求解 2.3 二分图最优匹配求解 2.4 二分图最优匹配建模实例 2.4.1 二分图最优匹配在师生匹配中的应用 ...

  7. 最小费用最大流 ---- 2017icpc青岛现场赛 K Our Journey of Xian Ends (拆点控制原图点度 + 中间必经过的点设置成源点 + 起点设成汇点)

    题目链接 题目大意: 题目贼恶心难读 就是你出发地是"Xian"西安,现在你要出发到上海然后再去青岛,然后回到上海 飞机场限制:就是每个机场只能降落和起飞一次 上海的限制:上海有两 ...

  8. Doctor NiGONiGO’s multi-core CPU(最小费用最大流模板)

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=693 题意:有一个 k 核的处理器和 n 个工作,全部的工作都须要在一个核上处理一个单位的 ...

  9. 【最小费用最大流】Going Home

    概念: 在同一个网络中,可能存在多个总流量相同的最大流,我们可以在计算流量的基础之上,给网络中的弧增加一个单位流量的费用(简称费用),在确保流量最大的前提下总费用最小--最小费用最大流. C - Go ...

最新文章

  1. [C#.NET通用权限管里系统组件]对资源权限、列表型、记录级权限、数据集权限的实现参考...
  2. pytorch 之 imagefloder的用法
  3. 如何处理Oracle中TEMP表空间满的问题(转载)
  4. 计算机兴趣小组活动教学教案,计算机兴趣小组计划教案.doc
  5. Windows配置Rsync同步,安装cwRsync
  6. GPU共享内存小结---pycuda
  7. 腾讯云副总裁王慧星:持续加大基础设施投入规模和自研创新力度
  8. 服务开通语音通知功能如何实现?服务开通语音提醒功能实现方案
  9. 冲刺大厂每日算法面试题,动态规划21天——第十二天
  10. 如何彻底解决Variable used in lambda expression should be final or effectively final
  11. Attack Lab
  12. 光模块单模和多模的区别
  13. 浅谈微信三级分销系统的漏洞
  14. shiro官方源码包下载
  15. 脱欧将对英国电信运营商造成什么影响?
  16. 宠辱不惊,闲看庭前花开花落;去留无意,漫随天外支卷云舒。【菜根谭】
  17. 解决笔记本外接显示器模糊问题
  18. 刻录原版系统光盘(用软碟通)
  19. android13(T) 通过烧写客制分区(customer)实现替换默认壁纸
  20. Nginx在阿里云的下载安装以及Nginx常见的命令及配置文件

热门文章

  1. 罗马仕充电宝php30pro爆炸,罗马仕:为什么总是出现充电宝自燃爆炸的事件?
  2. 计算机组成原理:乘法运算
  3. ubuntu /home 分区压缩
  4. 不可变集合、Stream、异常
  5. Linux系列之SSH建立互信
  6. (跨境电商模式)境外商品进口的4种方式
  7. python金融数据缺失处理_顺利迈过Tushare+python3+mySql读取金融数据的坑
  8. 短信接口在日常服务类行业的应用
  9. KMS激活时,常见的错误及处理
  10. pip install tkinter:ERROR: Could not find a version that satisfies the requirement tkinter