LeetCode:1334. 阈值距离内邻居最少的城市(Floyd C++)

1334. 阈值距离内邻居最少的城市

链接:

1334. 阈值距离内邻居最少的城市

题目描述:

        有 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 在阈值距离 2 以内只有 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) 都是不同的。

实现代码与解析:

Floyd

class Solution {
public:

    int INF = 1e9;

    int findTheCity(int n, vector<vector<int>>& edges, int distanceThreshold) {
        // 邻接矩阵
        vector<vector<long long>> d(n, vector<long long>(n));

        // 初始化
        for (int i = 0; i < n; i++) {
            for (int  j = 0; j < n; j ++) {
                if (i == j) d[i][j] = 0;
                else d[i][j] = INF;
            }
        }

        // 读入边
        for (int i = 0; i < edges.size(); i ++) {
            for (int j = 0; j < edges.size(); j ++) {
                int a = edges[i][0];
                int b = edges[i][1];
                int w = edges[i][2];
                d[a][b] = w; d[b][a] = w;
            }
        }

        // floyd 计算最短路,这里每个节点都要求,根据复杂度,所以用此算法
        for (int k = 0; k < n; k++) {
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++) {
                    d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
                }
            }
        }

        int min = INF; // 最小个数
        int res = 0; // 结果编号
        for (int i = 0; i < n; i++) {
            int cnt = 0;
            // cout << "第"+to_string(i)+"节点" << endl;
            for (int j = 0; j < n; j++) {
                if (i == j) continue;
                if (d[i][j] <= distanceThreshold) cnt++;
                // cout << d[i][j]<< endl;
            }
            // cout << endl;
            if (cnt <= min) {
                min = cnt;
                res = i;
            }
        }
        return res;
    }
};

原理思路:

        根据题目描述,和给出的数据量,需要得出每个结点到其他结点的最小值来计算结果,因此使用Floyd算法。

        在Floyd板子中,判断一下每个结点最短距离小于阈值的个数即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/149033.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OpenAI暂停新的ChatGPT Plus注册 | OpenAI 的 GPT Builder 创建您的 GPTs

OpenAI DevDay 才过去仅仅一周时间&#xff0c;伴随着开发者大会上发布的一系列重磅升级和新特性&#xff0c;无疑这样的进化速度让广大网友炸锅了&#xff0c;其火热程度可见一斑。 就在四个小时前&#xff0c;OpenAI的CEO Sam Altma突然宣布&#xff0c;ChatGPT Plus账号暂停…

Azure的AI使用-(语言检测、凸显分析、图像文本识别)

1.语言检测 安装包&#xff1a; # 语言检测 %pip install azure-ai-textanalytics5.2.0 需要用到密钥和资源的终结点&#xff0c;所以去Azure上创建资源&#xff0c;我这个是创建好的了然后点击密钥和终结者去拿到key和终结点 两个密钥选择哪个都行 语言检测代码示例&#…

sqli-labs(Less-3)

1. 通过构造id1’ 和id1’) 和id1’)–确定存在注入 可知原始url为 id(‘1’) 2.使用order by 语句猜字段数 http://127.0.0.1/sqlilabs/Less-3/?id1) order by 4 -- http://127.0.0.1/sqlilabs/Less-3/?id1) order by 3 --3. 使用联合查询union select http://127.0.0.1…

vue 事件总线 非父子组件之间的简单信息传递

如果两个组件不是父子关系&#xff0c;那么传递信息就不能通过props了。 此时可以使用vue的事件总线来传递信息。 1.创建非父子组件都能访问的事件总线&#xff08;也就是空的vue实例&#xff09; 1.创建一个EventBus.js 2.引入vue并且创建一个vue实例 import Vue from vuec…

OSPF常用配置例子

拓朴图如下&#xff1a; 配置步骤&#xff1a; 1.配置IP 2.ospf多区域配置 *Tips&#xff1a;undo info-center enable 关闭信息回显 3.出口设备注入默认路由&#xff08;完成标志是各路由器学习到默认路由&#xff0c;下发默认路由&#xff09; R1]default-route-adve…

vim——“Linux”

各位CSDN的uu们好呀&#xff0c;今天&#xff0c;小雅兰的内容是Linux的开发工具——vim。下面&#xff0c;我们一起进入Linux的世界吧&#xff01;&#xff01;&#xff01; Linux编辑器-vim使用 vim的基本概念 vim的基本操作 vim正常模式命令集 vim末行模式命令集 vim操…

远程登录Linux方法(Linux平台相互远程;Windows远程登录Linux、远程编码、文件传输;无法远程登录的问题解决;c程序的编译)

在实际使用Linux系统过程中我们不可避免的需要远程登录Linux&#xff0c;这是因为未来大家使用Linux服务器的时候你所对应的那台Linux服务器不一定提供界面(服务器可能在外地)。本篇将会介绍远程登录Linux的方法。 文章目录 1. SSH介绍2. Linux平台相互远程及文件传输2.1 Linux…

Kubernetes(k8s)资源管理

文章目录 Kubernetes资源管理1.资源管理介绍2.YAML语言介绍3.资源管理方式命令式对象管理命令式对象配置声明式对象配置 扩展&#xff1a;配置kubectl命令可以在node节点上运行 Kubernetes资源管理 1.资源管理介绍 在kubernetes中&#xff0c;所有的内容都抽象为资源&#xf…

优维产品最佳实践第14期:让重要告警能有序跟进,最终根治

监控系统的首要任务是利用特定指标来反映系统内部的健康状态&#xff0c;当指标异常时&#xff0c;会触发告警。对于简单告警的处理&#xff0c;基于告警轨迹可清晰记录和观察告警的状态变化过程。 然而&#xff0c;对于一个复杂告警的处理&#xff0c;可能需要多角色多部门协…

c++基于CImage实现图片格式转换完整源代码

最近遇到项目需要&#xff0c;对图片进行格式转换&#xff0c;抱着怎么简单怎么做的想法&#xff0c;于是进行了验证&#xff0c;代码参考自网络&#xff0c;进行了简单的修改。 我这里提供完整的代码。 直接上代码&#xff1a; 头文件&#xff1a; #pragma once#include &l…

RSS订阅快速连接Notion

数环通让您可以通过不到几分钟的时间即可实现RSS订阅与Notion的对接与集成&#xff0c;从而高效实现工作流程自动化&#xff0c;降本增效&#xff01; 1.产品介绍 RSS订阅是数环通的内置应用&#xff0c;很多用户通过RSS订阅来收集自己在各大平台上看的内容&#xff0c;当RSS…

关于2023年汉字小达人市级比赛的填空题,及孩子如何提高打字速度

2023年汉字小达人市级比赛安排确定了以后&#xff0c;有一些父母来咨询我市级比赛的题型和往年的真题情况&#xff0c;当了解到市级比赛真的有填空题以后&#xff0c;他们又开始焦虑了&#xff0c;因为孩子平时在家里从了必要的英语打卡等学习以外&#xff0c;刻意不让孩子过多…

【华为内部资料】《高速数字电路设计教材》(可下载)

与数字技术或软件相比&#xff0c;模拟技术人才的培养和造就仍然需要一定的实践和时间&#xff0c;但无论数字技术发展到任何阶段将永远离不开模拟技术。 由于难度系数较大的原因&#xff0c;有时即便投入很多精力&#xff0c;如果缺乏耐心、毅力和必要的条件&#xff0c;投入…

【面试经典150 | 位运算】数字范围按位与

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;公共前缀方法二&#xff1a;n & (n-1) 写在最后 Tag 【位运算】 题目来源 201. 数字范围按位与 题目解读 计算给定区间内所有整数的按位与的结果。 解题思路 本题朴素的方法是直接将区间内的所有整数按位与&…

java成员等

一个源文件只有一个public类 如何调用是这个 类里面有全局用类名调用(或者对象),非全局要新一个对象来调用 class Quanjv{public static int x1;public static int y2;public int y24;} public class chengyuan {public static void main(String[] args) {Quanjv quanjvn…

宏观角度认识递归之求根节点到叶节点数字之和

LCR 049. 求根节点到叶节点数字之和 - 力扣&#xff08;LeetCode&#xff09; 理解题意分析子问题&#xff1a;给一个头节点&#xff0c;要返回该头结点左右子树的根结点到叶节点数字和。此处还需注意&#xff1a;在获取根结点到叶节点数字和的时候&#xff0c;要传递一个参数&…

信道复用技术

信道复用技术&#xff1a;将多个信号通过同一个物理信道传输&#xff0c;以提高信道利用率和减少通信系统的成本 1.频分复用FDM(Frequency Division Multiplexing) 将多路基带信号调制到不同频率的载波上&#xff0c;再叠加形成一个复合信号的多路复用技术基带信号&#xff1…

excel数据文件的正常表达形式

正常有内容的excel文件是这样子 假若全部显示null 就没有修复的必要了 #数据恢复#

【Unity】Unity开发微信小游戏(三)工具使用Instant Game

Instant Game窗口通过Window->Auto Streaming打开。 也可参考官方详细说明 1.Texture Streaming 配置游戏内texture是否使用streaming功能&#xff0c;以及streaming placeholder的类型。AutoStreaming用placeholder图片替换游戏首包内的原始贴图&#xff0c;游戏运行时&a…

实用干货丨Eolink Apikit 配置和告警规则的各种用法

API在运行过程中可能会遇到各种异常情况&#xff0c;如响应时间过长、调用频率过高、请求参数错误等&#xff0c;这些异常会对系统的稳定性和性能产生严重影响。因此&#xff0c;对API进行异常监控和告警是非常必要的。本文将介绍 Eolink Apikit 中使用的告警规则&#xff0c;帮…