栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

算法初赛第十六题

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

算法初赛第十六题

算法初赛第十六题
  • 题目描述
  • 解法一
    • 解题思路
    • python代码

题目描述
  1. 网络延迟时间
    有 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.定义dist数组,dist[i]表示从出发点k,到i需要走的距离,初始全为无穷大
2.dist[k-1] = 0
3.将出发点k能直接到的点,的dist赋值
4.重复遍历数组times n-1次,将数组将能从k走到的点全部的dist全部赋值
5.计算dist的最大值,如果为无穷大,则说明从k出发不能走遍全部点,反之返回最大值
python代码
def networkDelayTime(self, times: List[List[int]], n: int, k: int) -> int:
        dist = [float('inf')] * n
        dist[k-1] = 0
        for u, v, w in times:
            if u == k:
                dist[v-1] = w
        for i in range(n-1):
            for u, v, w in times:
                if dist[u-1] + w < dist[v-1]:
                    dist[v-1] = dist[u-1] + w
        res = max(dist)
        return res if res < float('inf') else -1

运行结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/487975.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号