create dev channel

This commit is contained in:
2025-05-07 04:44:30 +09:00
parent 603fca2b20
commit 16a8e59450
426 changed files with 643 additions and 36 deletions

47
zeta/py/completed/1504.py Normal file
View File

@@ -0,0 +1,47 @@
import heapq
import sys
input = sys.stdin.readline
def dijkstra(N, E, start) -> list[int]:
heap = []
distance = [10 ** 9 + 1 for _ in range(N + 1)]
distance[start] = 0
heapq.heappush(heap, (0, start,))
while heap:
cost, now, = heapq.heappop(heap)
if distance[now] < cost:
continue
for new, weight in E[now]:
new_cost = cost + weight
if new_cost < distance[new]:
distance[new] = new_cost
heapq.heappush(heap, (new_cost, new))
return distance
def solve(N, E, v1, v2) -> int:
heap = []
distance_from_v1 = dijkstra(N, E, v1, )
distance_from_v2 = dijkstra(N, E, v2, )
ret = min(
(sum((distance_from_v1[1], distance_from_v1[v2], distance_from_v2[N])),
sum((distance_from_v2[1], distance_from_v2[v1], distance_from_v1[N])))
)
return ret if ret < 10 ** 9 + 1 else -1
if __name__ == '__main__':
N, e = map(int, input().split())
E = {}
for i in range(1, N + 1):
E[i] = []
for _ in range(e):
a, b, c = map(int, input().split())
E[a].append((b, c))
E[b].append((a, c))
v1, v2 = map(int, input().split())
print(solve(N, E, v1, v2))