Skip to content

Commit

Permalink
2025-01-09
Browse files Browse the repository at this point in the history
  • Loading branch information
tgyuuAn committed Jan 8, 2025
1 parent d39d389 commit fe614f5
Show file tree
Hide file tree
Showing 2 changed files with 83 additions and 0 deletions.
1 change: 1 addition & 0 deletions tgyuuAn/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,4 +88,5 @@
| 82์ฐจ์‹œ | 2024.11.22 | ํฌ์†Œ ๋ฐฐ์—ด | <a href="https://www.acmicpc.net/problem/17435">ํ•ฉ์„ฑํ•จ์ˆ˜์™€ ์ฟผ๋ฆฌ</a> | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/257
| 83์ฐจ์‹œ | 2024.12.01 | ์ˆ˜ํ•™ + ๊ตฌํ˜„ | <a href="https://www.acmicpc.net/problem/1033">์นตํ…Œ์ผ</a> | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/259
| 84์ฐจ์‹œ | 2024.12.31 | BFS | <a href="https://www.acmicpc.net/problem/4179">๋ถˆ!</a> | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/261
| 85์ฐจ์‹œ | 2025.01.09 | ๋‹ค์ต์ŠคํŠธ๋ผ + ์ด๋ถ„ ํƒ์ƒ‰ | <a href="https://www.acmicpc.net/problem/1800">์ธํ„ฐ๋„ท ์„ค์น˜</a> | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/264
---
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
from heapq import *
from collections import defaultdict

total_node_count, total_edge_count = map(int,input().split(" "))

visited = [False for _ in range(total_node_count+1)]
distance_table = [int(1e9) for _ in range(total_node_count+1)]
link_table = defaultdict(lambda: defaultdict(lambda : int(1e9)))

for _ in range(total_edge_count):
node1, node2, weight = map(int, input().split(" "))
link_table[node1][node2] = weight
link_table[node2][node1] = weight

specific_node1, specific_node2 = map(int, input().split(" "))
distance_table[1] = 0
heap = [[0,1]]

while heap:

now_distance, now_node = heappop(heap)
visited[now_node] = True

for link_node in link_table[now_node]:

if visited[link_node] == True:
continue

if distance_table[link_node] > now_distance + link_table[now_node][link_node]:

distance_table[link_node] = now_distance + link_table[now_node][link_node]
heappush(heap,[distance_table[link_node],link_node])

specific_node1_distance_table = [int(1e9) for _ in range(total_node_count+1)]
specific_node1_distance_table[specific_node1] = 0
visited = [False for _ in range(total_node_count+1)]
heap = [[0,specific_node1]]
while heap:

now_distance, now_node = heappop(heap)
visited[now_node] = True

for link_node in link_table[now_node]:

if visited[link_node] == True:
continue

if specific_node1_distance_table[link_node] > now_distance + link_table[now_node][link_node]:

specific_node1_distance_table[link_node] = now_distance + link_table[now_node][link_node]
heappush(heap,[specific_node1_distance_table[link_node],link_node])

specific_node2_distance_table = [int(1e9) for _ in range(total_node_count+1)]
specific_node2_distance_table[specific_node2] = 0
visited = [False for _ in range(total_node_count+1)]
heap = [[0,specific_node2]]
while heap:

now_distance, now_node = heappop(heap)
visited[now_node] = True

for link_node in link_table[now_node]:

if visited[link_node] == True:
continue

if specific_node2_distance_table[link_node] > now_distance + link_table[now_node][link_node]:

specific_node2_distance_table[link_node] = now_distance + link_table[now_node][link_node]
heappush(heap,[specific_node2_distance_table[link_node],link_node])

first_route = distance_table[specific_node1] + specific_node1_distance_table[specific_node2] + specific_node2_distance_table[total_node_count]
second_route = distance_table[specific_node2] + specific_node2_distance_table[specific_node1] + specific_node1_distance_table[total_node_count]

if first_route >= int(1e9) and second_route >= int(1e9):
print(-1)

elif first_route < second_route:
print(first_route)

else:
print(second_route)

0 comments on commit fe614f5

Please sign in to comment.