1. 题目

有 n 个城市,按从 0 到 n-1 编号。给你一个边数组 edges,其中 edges[i] = [fromi, toi, weighti] 代表 fromi 和 toi 两个城市之间的双向加权边,距离阈值是一个整数 distanceThreshold。

返回能通过某些路径到达其他城市数目最少、且路径距离 最大 为 distanceThreshold 的城市。如果有多个这样的城市,则返回编号最大的城市。

注意,连接城市 i 和 j 的路径的距离等于沿该路径的所有边的权重之和。

示例 1:
输入:n = 4, edges = [[0,1,3],[1,2,1],[1,3,4],[2,3,1]], distanceThreshold = 4
输出:3
解释:城市分布图如上。
每个城市阈值距离 distanceThreshold = 4 内的邻居城市分别是:
城市 0 -> [城市 1, 城市 2]
城市 1 -> [城市 0, 城市 2, 城市 3]
城市 2 -> [城市 0, 城市 1, 城市 3]
城市 3 -> [城市 1, 城市 2]
城市 0 和 3 在阈值距离 4 以内都有 2 个邻居城市,但是我们必须返回城市 3,因为它的编号最大。

示例 2:
输入:n = 5, edges = [[0,1,2],[0,4,8],[1,2,3],[1,4,2],[2,3,1],[3,4,1]], distanceThreshold = 2
输出:0
解释:城市分布图如上。
每个城市阈值距离 distanceThreshold = 2 内的邻居城市分别是:
城市 0 -> [城市 1]
城市 1 -> [城市 0, 城市 4]
城市 2 -> [城市 3, 城市 4]
城市 3 -> [城市 2, 城市 4]
城市 4 -> [城市 1, 城市 2, 城市 3]
城市 0 在阈值距离 4 以内只有 1 个邻居城市。提示:
2 <= n <= 100
1 <= edges.length <= n * (n - 1) / 2
edges[i].length == 3
0 <= fromi < toi < n
1 <= weighti, distanceThreshold <= 10^4
所有 (fromi, toi) 都是不同的。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-the-city-with-the-smallest-number-of-neighbors-at-a-threshold-distance
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

参考他人解题

class Solution {public:int findTheCity(int n, vector<vector<int>>& edges, int distanceThreshold) {vector<vector<int>> dis(n,vector<int>(n,INT_MAX));//最短路径矩阵for(int i = 0; i < n; ++i)dis[i][i] = 0;//自己到自己为0for(int i = 0; i < n; ++i){//优先队列,按照pair的第一个排序,相同的话,则按第二个排序出队priority_queue<pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> q;q.push({0,i});//第一个是距离,第二个是点的序号int from, to, distance;while(!q.empty()){from = q.top().second;q.pop();for(const auto& e : edges){if(from == e[0]){to = e[1];distance = e[2];if(dis[i][from]+distance < dis[i][to]){    //有更小的路径可以到达 i--> todis[i][to] = dis[i][from]+distance;q.push({dis[i][to], to});}}else if(from == e[1]){to = e[0];distance = e[2];if(dis[i][from]+distance < dis[i][to]){dis[i][to] = dis[i][from]+distance;q.push({dis[i][to], to});}}}}}int count[n]={0};for(int i = 0; i < n; ++i)for(auto& d : dis[i])if(d <= distanceThreshold)//统计阈值内的城市个数count[i]++;int minVal = INT_MAX, idx;for(int i = 0; i < n; ++i){if(count[i] <= minVal){minVal = count[i];idx = i;//找距离内,邻近城市最少的城市}}return idx;}
};

LeetCode 1334. 阈值距离内邻居最少的城市(最短路径Dijkstra)相关推荐

  1. LeetCode 1334. 阈值距离内邻居最少的城市--堆优化最短路

    阈值距离内邻居最少的城市 有 n 个城市,按从 0 到 n-1 编号.给你一个边数组 edges,其中 edges[i] = [fromi, toi, weighti] 代表 fromi 和 toi ...

  2. [leetcode]5321. 阈值距离内邻居最少的城市

    多源最短路径类型的题目 1.floydWarshall class Solution {public:void floydWarshall(int n,vector<vector<int& ...

  3. leetcode-每日一题-1334-阈值距离内邻居最少的城市(中等,floyd)

    佛洛依德的变化问法,我之前有文章介绍过佛洛依德算法,不难可以去看看. 1334. 阈值距离内邻居最少的城市 难度中等94收藏分享切换为英文接收动态反馈 有 n 个城市,按从 0 到 n-1 编号.给你 ...

  4. c++ 遍历所有点且距离最短_C/C++ 图的最短路径 Dijkstra 算法

    作者:小石王 链接:https://www.cnblogs.com/xiaoshiwang/p/9442391.html 图的最短路径的概念: 一位旅客要从城市A到城市B,他希望选择一条途中中转次数最 ...

  5. LeetCode 921. 使括号有效的最少添加(栈)

    1. 题目 给定一个由 '(' 和 ')' 括号组成的字符串 S,我们需要添加最少的括号( '(' 或是 ')',可以在任何位置),以使得到的括号字符串有效. 从形式上讲,只有满足下面几点之一,括号字 ...

  6. Atitit glb 3tie city lst 三线城市列表 数据目录1. 全球范围内约90个城市 三线 12. 世界性三线城市全球共

    Atitit glb 3tie city lst 三线城市列表 数据 目录 1. 全球范围内约90个城市 三线 1 2. 世界性三线城市全球共有83个 2 2.1. ,我国拥有8个城市,即青岛.苏州. ...

  7. LeetCode 2146. 价格范围内最高排名的 K 样物品(BFS)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个下标从 0 开始的二维整数数组 grid ,它的大小为 m x n ,表示一个商店中物品的分布图.数组中的整数含义为: 0 表示无法穿越的一堵墙. ...

  8. LeetCode 1568. 使陆地分离的最少天数(DFS)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个由若干 0 和 1 组成的二维网格 grid ,其中 0 表示水,而 1 表示陆地. 岛屿由水平方向或竖直方向上相邻的 1 (陆地)连接形成. 如 ...

  9. LeetCode 358. K 距离间隔重排字符串(贪心+优先队列)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个非空的字符串 s 和一个整数 k,你要将这个字符串中的字母进行重新排列,使得重排后的字符串中相同字母的位置间隔距离至少为 k. 所有输入的字符串都 ...

最新文章

  1. Delphi XE2 之 FireMonkey 入门(17) - 特效
  2. 嵌入式开发试题1-100
  3. 2.1.5 编码与调制(1)
  4. mysql5.7.24怎么打开_mysql-5.7.24-winx64安装教程
  5. 在VS2010中使用Git【图文】
  6. C语言结构体数组的使用
  7. Linux declare命令、Linux tail 命令
  8. 腾讯QQ团队开源分布式后台毫秒服务引擎全解析:引擎架构、RPC、灰度……
  9. gitlab访问错误Whoops, GitLab is taking too much time to respond
  10. linux命令取ip,linux下命令取IP地址的多种方法
  11. jQuery Mobile中链接(包含button和表单提交的链接)的data-*选项
  12. 利用partial关键字声明分部类和分部方法
  13. PyQt5中的下拉框控件(QComboBox)文本居中
  14. python的os为啥找不到文件_python – pyenchant在Mac OS X上找不到字典文件
  15. Cannot find module ‘node-sass‘问题解决
  16. java pfx_如何在Java中读取.pfx文件的内容?
  17. opencv改变图片大小,cv2.resize方法详解
  18. 纪录片拍摄前期准备内容
  19. 《云计算架构技术与实践》连载(2):1.2 云计算的发展趋势
  20. 74LS85 比较器 【数字电路】

热门文章

  1. python文件夹目录_Python 操作文件、文件夹、目录大全
  2. grid autosport额外内容下载慢_清理大王app下载-清理大王v1.0安卓下载
  3. 第一季6:海思方案中uboot、kernel和rootfs的烧写方法
  4. shell 替换字符串的几种方法,变量替换${},sed,awk
  5. 计算几何——圆卡精度cf1059D
  6. 洛谷树剖模板题 P3384 | 树链剖分
  7. 关于MapReduce中自定义Combine类(一)
  8. 一个符合SEO优化标准的网站应具备哪些特征?
  9. NHibernate 异常及解决办法(长期添加中)
  10. 用 Shell 快速写一个嵌入式测试框架