题目链接

给你一个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. PIX 525下的怪问题(需在防火墙后的同子网上激活之后才能在INTERNET上使用)?...
  2. 深度学习果实即将摘尽?11位大牛谈AI的当下(2018)与未来(2019)
  3. JavaEE Servlet 并发问题
  4. 远程桌面漏洞poc_十万火急,速打补丁!Windows RDP服务蠕虫级漏洞攻击被公开
  5. Unity3D的断点调试功能
  6. python函数学习1
  7. 解密多媒体封装解封装框架
  8. 码工里开关灯为什么遮罩层在下面_装修公司为什么推荐无主灯设计?
  9. 打造Linux回收站
  10. go 已知有个排序(升序)的数组,要求插入一个元素,最后打印该数组,顺序依然是升序
  11. SpringMVC 全局异常处理的简单应用
  12. 25_android下文件访问的权限
  13. HDU 6183 2017广西邀请赛:Color it(线段树)
  14. Flink SQL中的函数
  15. 黑马程序员C++学习笔记(第三阶段核心:STL)--- 更新中
  16. PR菜鸟入门 -- PR下载安装
  17. 浅谈文字编码和Unicode(中)[转]
  18. Excel中纵向查找函数-VLOOKUP函数
  19. Elasticsearch和Kibana版本对应关系
  20. Spring Hystrix 原理与使用详解

热门文章

  1. 家电行业被迫“大象转身”,破局出路在哪?
  2. 双曲抛物面z=xy俗称马鞍面-高数学习笔记(1)
  3. DataTable 插件 Uncaught TypeError: Cannot read property ‘top‘ of undefined
  4. 如何查看ppm格式的图像
  5. R手册(Visualise)--ggplot2
  6. 手机APP考研帮自动化测试
  7. java springboot物业管理微信小程序源码
  8. C++第二阶段(跨平台通信)-卢嘉文-专题视频课程
  9. SVN设置外网地址访问
  10. 一个演奏乐曲的趣味小程序