【代码随想录算法训练营第六十四天|卡码网47.参加科学大会、94.城市间货物运输I】

47.参加科学大会

其实和昨天的方法差不多,一个是用邻接列表来表示点之间的连接,一个是用小顶堆的方式来存储边的权值,在找最短边的时候不用再去比较。

import heapq
n, m = map(int, input().split())
grid = [[] for _ in range(n+1)]
for i in range(m):
    s, t, v = map(int, input().split())
    grid[s].append([v, t])
start = 1
end = n 
visited = [False] * (n+1)
minDist = [float('inf')] * (n+1)
minDist[start] = 0
heap = []
heapq.heappush(heap, [0, start])
while heap:
    cur = heapq.heappop(heap)
    if visited[cur[1]]:
        continue
    visited[cur[1]] = True
    for edge in grid[cur[1]]:
        if not visited[edge[1]] and minDist[cur[1]]+ edge[0] < minDist[edge[1]]:
            minDist[edge[1]] = minDist[cur[1]] + edge[0]
            heapq.heappush(heap, [minDist[edge[1]], edge[1]])
if minDist[end] < float('inf'):
    print(minDist[e nd])
else:
    print(-1)
     

94.城市间货物运输I

Bellman_ford也好理解,就是每次对所有可以连接到的点(即对所有边)都更新一次距离原点的距离,每更新一次就能推断出距离原点+1结点位置的最近距离,那对于n个结点最多需要n-1次更新退出最近的距离。

n, m = map(int, input().split())
grid = []
for i in range(m):
    s, t, v = map(int, input().split())
    grid.append([s, t, v])
start = 1
end = n 
minDist = [float('inf')] * (n + 1)
minDist[1] = 0
for i in range(n-1):
    for edge in grid:
        if minDist[edge[0]]!=float('inf') and minDist[edge[1]] > minDist[edge[0]] + edge[2]:
            minDist[edge[1]] = minDist[edge[0]] + edge[2]
            updated = True
if minDist[end]!=float('inf'):
    print(minDist[end])
else:
    print('unconnected')

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 01:06:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 01:06:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 01:06:02       58 阅读
  4. Python语言-面向对象

    2024-07-12 01:06:02       69 阅读

热门阅读

  1. C#——Array类详情

    2024-07-12 01:06:02       26 阅读
  2. [202406] 一级 填空题 1~8题 答案解析

    2024-07-12 01:06:02       22 阅读
  3. 动态模型管理:Mojo模型的自定义保存与加载控制

    2024-07-12 01:06:02       24 阅读
  4. nginx-----web服务器

    2024-07-12 01:06:02       23 阅读
  5. Vue笔记10-其它Composition API

    2024-07-12 01:06:02       23 阅读
  6. Chromium编译指南2024 Linux篇-解决运行报错信息(六)

    2024-07-12 01:06:02       23 阅读
  7. prototype 和 __proto__的区别

    2024-07-12 01:06:02       25 阅读
  8. Spring-Data-Elasticsearch

    2024-07-12 01:06:02       28 阅读
  9. npm ERR! code ENOTEMPTY npm ERR! syscall rename npm ERR!

    2024-07-12 01:06:02       23 阅读
  10. sizeof()

    2024-07-12 01:06:02       24 阅读
  11. Python 四种字符串格式化方式

    2024-07-12 01:06:02       23 阅读
  12. 存取款系统接口设计

    2024-07-12 01:06:02       20 阅读
  13. SpringBoot 自定义异常返回数据格式

    2024-07-12 01:06:02       21 阅读
  14. ubuntu 安装cups和爱普生打印机

    2024-07-12 01:06:02       20 阅读