首页 > 其他分享 >743. 网络延迟时间

743. 网络延迟时间

时间:2023-07-27 17:56:58浏览次数:29  
标签:743 dist int vi 网络 times 延迟时间 INF 节点

743. 网络延迟时间

n 个网络节点,标记为 1 到 n

给你一个列表 times,表示信号经过 有向 边的传递时间。 times[i] = (ui, vi, wi),其中 ui 是源节点,vi 是目标节点, wi 是一个信号从源节点传递到目标节点的时间。

现在,从某个节点 K 发出一个信号。需要多久才能使所有节点都收到信号?如果不能使所有节点收到信号,返回 -1

 

示例 1:

输入:times = [[2,1,1],[2,3,1],[3,4,1]], n = 4, k = 2
输出:2

示例 2:

输入:times = [[1,2,1]], n = 2, k = 1
输出:1

示例 3:

输入:times = [[1,2,1]], n = 2, k = 2
输出:-1

 

提示:

  • 1 <= k <= n <= 100
  • 1 <= times.length <= 6000
  • times[i].length == 3
  • 1 <= ui, vi <= n
  • ui != vi
  • 0 <= wi <= 100
  • 所有 (ui, vi) 对都 互不相同(即,不含重复边)
class Solution {
    public int networkDelayTime(int[][] times, int n, int k) {
        // 设置一个常量,表示不可达
        final int INF = Integer.MAX_VALUE / 2;
        // 图g
        int[][] g = new int[n][n];
        // 将图g中各点距离填充为不可达
        for (int i = 0; i < n; ++i) {
            Arrays.fill(g[i], INF);
        }
        // 将两节点传递时间填充至图g
        for (int[] t : times) {
            int x = t[0] - 1, y = t[1] - 1;
            g[x][y] = t[2];
        }
        // dist[i]表示到i节点的最短路径
        int[] dist = new int[n];
        Arrays.fill(dist, INF);
        // 到自己为0
        dist[k - 1] = 0;
        boolean[] used = new boolean[n];
        // 核心代码
        for (int i = 0; i < n; ++i) {
            // -1表示刚进来,还未进入路径迭代
            int x = -1;
            // 每次从「未确定节点」中取一个与起点距离最短的点,将它归类为「已确定节点」
            for (int y = 0; y < n; ++y) {
                if (!used[y] && (x == -1 || dist[y] < dist[x])) {
                    x = y;
                }
            }
            used[x] = true;
    // 用它「更新」从起点到其他所有「未确定节点」的距离直到所有点都被归类为「已确定节点」
            for (int y = 0; y < n; ++y) {
                // 这里相加就是前面为什么INF去最大值/2的原因
                dist[y] = Math.min(dist[y], dist[x] + g[x][y]);
            }
        }
        int ans = Arrays.stream(dist).max().getAsInt();
        return ans == INF ? -1 : ans;
    }
}

 

标签:743,dist,int,vi,网络,times,延迟时间,INF,节点
From: https://www.cnblogs.com/fulaien/p/17585678.html

相关文章

  • 网络编程面试
      TCP和UDP的区别TCP是面向连接的,传输前需要建立连接。UDP传输前不需要建立连接TCP仅支持一对一,UDP支持点对点,一对多,多对一TCP是面向字节流,UDP面向数据报TCP是可靠的,UDP是不可靠的TCP首部开销大于UDP,TCP首部开销最少20字节,UDP只需要8字节 TCP有三次握手机制和四次......
  • 基于异构图神经网络的电影预测
    目录1.数据处理(1)构建点(2)构建边2.构建异构图3.设置训练参数4.构建网络结构5.预测本文根据传入的用户对电影的评分以及电影的类型数据,首先电影和用户作为图的点,根据电影的类型作为电影的特征,用户则通过embedding映射成向量作为特征,用户对电影的评分作为边,再通过torch_geometri......
  • k8s中如何固定一个pod的IP地址?该集群网络插件是calico
    1、首先查看calico的CIDR地址范围[root@nccztsjb-node-17~]#calicoctlgetippoolNAMECIDRSELECTORdefault-pool172.23.0.0/16all() 2、然后呢,在这个地址范围内,给pod选择一个固定的IP地址比如:172.23.45.27 通过在pod中加入annotat......
  • 网络安全之SQL注入基于DVWA平台
    弱口令SQL注入万能密码admin'--'admin'#万能用户名xxx'or1=1limit1---脱库一库:information_schema三表:schemata表:存放所有数据库信息tables表:存放所有表信息columns表:存放所有字段信息六字段:schemata表的schema_name字段:存放具体的数据库名......
  • 网络基础知识
    36张图,一次性补全网络基础知识!民工哥技术之路专注系统、Java后端、架构设计、微服务、集群、中间件等开源技术分享(后台回复1024免费赠送资源),关注我!一同成长!380篇原创内容公众号OSI和TCP/IP是很基础但又非常重要的知识,很多知识点都是以它们为基础去串联的,作......
  • Go语言网络编程示例
    1.简单示例以下是一个使用Go语言标准库net实现的简单的客户端和服务器端示例。服务器端监听本地的8080端口,并在接收到客户端连接后,向客户端发送一条欢迎消息。客户端通过Dial方法连接服务器,并接收服务器发送的欢迎消息。服务器端代码:packagemainimport("......
  • 网络瘤24题解+总结
    目录网络流24题太空飞行计划最大权闭合子图模型最小路径覆盖问题Trick总结网络流24题顺序主观决定太空飞行计划教训:(开始想费用流,搞半天出不来)网络流解决最大/小费用问题,要么最小割最大流,要么最小费用流最小费用流的前提是最大流,所以在有一些点可以不取换最优代价的时候,是......
  • 基于图神经网络的电商购买预测
    目录1.查看数据(1)数据介绍(2)选择部分数据建模(3)合并两个表2.构建自己的数据集3.构建网络结构(1)TopKPooling流程(2)构建网络模型4.模型训练5.结果本文把每一件商品看做一个点,session_id表示用户,每个用户的浏览购买物品形成一张图。把每个点都embedding成128维的向量,构建网络......
  • 实操--网络配置
    子网地址,网关网络配置原理图ipconfig查看Windows网络ipifconfig查看Linux网络ipLinux网络环境配置红色代码部分粘贴到最后,将BOOTPROTO从dhcp改为static;保存好了之后,虚拟器 编辑--虚拟网络编辑器--改成设置的ip地址;然后重启网络服务器或者重启系统生效!servicenetwo......
  • 基于LSTM深度学习网络的人员行走速度识别matlab仿真,以第一视角视频为样本进行跑或者
    1.算法理论概述      人员行走速度是衡量人体运动能力和身体健康的重要指标之一。目前,常见的人员行走速度识别方法主要基于传感器或摄像头获取的数据,如加速度计数据、GPS数据和视频数据等等。其中,基于视频数据的方法因为其易于获取和处理而备受关注。但是,传统的基于特征提......