蓝桥20052 曲率驱动-权值变动dijkstra
1.蓝桥20052 曲率驱动-权值变动dijkstra
2.蓝桥20182 知识考量码:递归懒得写了,记录下思路:
在n次修改的过程中进行n次全图dijkstra,原版dijkstra的初始dist是全[inf],但在n次过程中完成的dist会作为下一次全图计算的初始dist,堆大小10^6,
建n次图复杂度10^6
一个误区是dijkstra的初始状态是只有起点自身,是错误的,其实应该是已经所有查找过的路线
from math import inf
import heapq
n, m = map(int, input().split())
g = [[] for _ in range(n + 1)]
for _ in range(m):
x, y, w = map(int, input().split())
g[x].append([y, w])
g[y].append([x, w])
k = int(input())
changes = list(map(int, input().split()))
dist = [inf] * (n + 1)
dist[1] = 0
def dijkstra():
heap = []
for i, dst in enumerate(dist):
if dst != inf:
heapq.heappush(heap, (dst, i))
while heap:
d, u = heapq.heappop(heap)
if d > dist[u]:
continue
for v, weight in g[u]:
if dist[u] + weight < dist[v]:
dist[v] = dist[u] + weight
heapq.heappush(heap, (dist[v], v))
dijkstra()
for change in changes:
for i in range(1, n + 1):
for j, _ in enumerate(g[i]):
g[i][j][1] ^= change
dijkstra()
for x in dist[1:]:
print(x if x != inf else -1, end = ' ')
合集:
算法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架