Hiya_
๊ฐœ๋ฐœ์ž์ทจ๐ŸŒฑ
Hiya_
Github
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (154)
    • ๐Ÿ’ปBackend (10)
      • ๋ผ์ด์ง•์บ ํ”„ (6)
      • SSAFY | ์‹ธํ”ผ (2)
      • ์‹ ํ•œDS ๊ธˆ์œตSW ์•„์นด๋ฐ๋ฏธ (2)
    • ๐Ÿ“๋ฌธ์ œ ํ’€์ด (102)
      • ๐ŸงฉBaekjoon (47)
      • ๐ŸงฉProgrammers (42)
      • ๐ŸงฉSWExpertAcademy (10)
      • ๐ŸงฉSofteer (3)
    • ๐Ÿ“‚Language (31)
      • Python (3)
      • JAVA (2)
      • SQL (6)
      • English (19)
    • โœจUseful information (5)
    • ๐Ÿ”‘Algorithms (3)
    • ๐Ÿ™Git (2)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ์˜ค๋ธ”์™„
  • ํ•ด์ปค์ŠคํŒŒ๋žญ์ด
  • BFS
  • ์ •๋ ฌ
  • ํ† ์ต๋ฌด๋ฃŒ์ž๋ฃŒ
  • ๋‹ค์ต์ŠคํŠธ๋ผ
  • ํ† ์ต๋…ํ•™
  • ๊ตฌํ˜„
  • 2์ฐจ์› ๋ฐฐ์—ด
  • ๋ฐฑ์ค€
  • ํ•ด์ปค์Šคํ† ์ต
  • ์™„์ „ํƒ์ƒ‰
  • ์ฝ”ํ…Œ
  • BaekJoon
  • greedy algorithm
  • ๋‚ด์žฅํ•จ์ˆ˜
  • UNION ALL
  • ํ† ์ต๋ฌด๋ฃŒ๊ฐ•์˜
  • ํ† ์ต๊ณต๋ถ€
  • Union
  • ๋ฆฌ์ŠคํŠธ
  • sort
  • ํ† ์ต์‹œํ—˜
  • ํ† ์ต๊ธฐ์ถœ
  • Python
  • ๊ทธ๋ฆฌ๋””
  • ํ† ์ตRC
  • mysql
  • ํ‹ฐ์Šคํ† ๋ฆฌ์ฑŒ๋ฆฐ์ง€
  • ํ† ์ต์ ์ˆ˜

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ


Owner : ๊น€์‹ ์˜
Naver Blog

hELLO ยท Designed By ์ •์ƒ์šฐ.
Hiya_

๊ฐœ๋ฐœ์ž์ทจ๐ŸŒฑ

๐Ÿ“๋ฌธ์ œ ํ’€์ด/๐ŸงฉBaekjoon

[Python] ๋ฐฑ์ค€ 1504 ํŠน์ •ํ•œ ์ตœ๋‹จ ๊ฒฝ๋กœ | ๋‹ค์ต์ŠคํŠธ๋ผ

2023. 5. 17. 16:31

 

~๋ชฉ์ฐจ~

๋ฌธ์ œ

๋ฌธ์ œ ํ•ด๊ฒฐ ํฌ์ธํŠธ

์ž‘์„ฑ ์ฝ”๋“œ


 

๋ฌธ์ œ

https://www.acmicpc.net/problem/1504

 

1504๋ฒˆ: ํŠน์ •ํ•œ ์ตœ๋‹จ ๊ฒฝ๋กœ

์ฒซ์งธ ์ค„์— ์ •์ ์˜ ๊ฐœ์ˆ˜ N๊ณผ ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜ E๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (2 ≤ N ≤ 800, 0 ≤ E ≤ 200,000) ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ E๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ์„œ ์„ธ ๊ฐœ์˜ ์ •์ˆ˜ a, b, c๊ฐ€ ์ฃผ์–ด์ง€๋Š”๋ฐ, a๋ฒˆ ์ •์ ์—์„œ b๋ฒˆ ์ •์ ๊นŒ์ง€ ์–‘๋ฐฉํ–ฅ ๊ธธ์ด ์กด

www.acmicpc.net

 

 

๋ฌธ์ œ ํ•ด๊ฒฐ ํฌ์ธํŠธ

- v1 -> v2 ์ˆœ์„œ ๋˜๋Š” v2 -> v1 ์ˆœ์„œ ๊ฐ๊ฐ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜์—ฌ ์ž‘์€ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค. (2๋ฒˆ์˜ ๋‹ค์ต์ŠคํŠธ๋ผ)

- ๊ฒฝ๋กœ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ(๊ฒฐ๊ณผ ๊ฐ’์ด INF๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฒฝ์šฐ) -1์„ ์ถœ๋ ฅ

 

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฝ”๋“œ ์ฃผ์„ ์ฐธ๊ณ 

 

 

์ž‘์„ฑ ์ฝ”๋“œ

 

import sys
import heapq
input = sys.stdin.readline
INF = int(1e9)

N, E = map(int, input().split())  # ๋…ธ๋“œ์ˆ˜, ๊ฐ„์„ ์ˆ˜
graph = [[] for _ in range(N+1)]  # ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ

distance2 = [INF]*(N+1)  # v1์—์„œ ๊ฐ ๋…ธ๋“œ ์ตœ์†Œ ๊ฑฐ๋ฆฌ ์ €์žฅ
distance3 = [INF]*(N+1)  # v2์—์„œ ๊ฐ ๋…ธ๋“œ ์ตœ์†Œ ๊ฑฐ๋ฆฌ ์ €์žฅ

for _ in range(E):  # ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ(๋ฌด๋ฐฉํ–ฅ)
    a, b, w = map(int, input().split())
    graph[a].append((b, w))
    graph[b].append((a, w))
    
v1, v2 = map(int, input().split())  # ๋ฐ˜๋“œ์‹œ ์ง€๋‚˜์•ผ ํ•  ๋‘ ๋…ธ๋“œ

def dijkstra(start, distance):  # ๋‹ค์ต์ŠคํŠธ๋ผ
    q = []
    distance[start] = 0
    heapq.heappush(q, (0, start))  # ์šฐ์„  ์ˆœ์œ„ ํ ์ดˆ๊ธฐํ™”

    while q:  # ํ์— ๊ฐ’์ด ์žˆ์„ ๋•Œ
        dist, now = heapq.heappop(q)  # ๊ฑฐ๋ฆฌ๊ฐ€ ์ตœ์†Œ์ธ ๋…ธ๋“œ
        if distance[now] < dist:  # ๋ฐฉ๋ฌธํ•œ ๋…ธ๋“œ
            continue
        for v, w in graph[now]:
            cost = dist + w
            if distance[v] > cost:
                distance[v] = cost
                heapq.heappush(q, (cost, v))


dijkstra(v1, distance2)  # v1์œผ๋กœ ๋ถ€ํ„ฐ ์ตœ์†Œ ๊ฑฐ๋ฆฌ ๊ตฌํ•˜๊ธฐ(distance2)
dijkstra(v2, distance3)  # v2๋กœ ๋ถ€ํ„ฐ ์ตœ์†Œ ๊ฑฐ๋ฆฌ ๊ตฌํ•˜๊ธฐ(distance3)

# distance2๋Š” v1์˜ distance3๋Š” v3์˜ ์ตœ์†Œ ๊ฑฐ๋ฆฌ์ด๋‹ค. 
# 1 -> v1 -> v2 -> N ๋˜๋Š” 1 -> v2 -> v1 -> N ์ค‘ ์ž‘์€ ๊ฐ’์„ ๊ตฌํ•œ๋‹ค.
result = min(distance2[1] + distance3[N] + distance2[v2], distance3[1] + distance2[N] + distance3[v1])

print(-1 if result >= INF else result)  # ๊ธธ์ด ์—†๋‹ค๋ฉด(INF๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๋ฉด) -1 ๋ฐ˜ํ™˜

 

 

 

๋„์›€์ด ๋˜์…จ๋‹ค๋ฉด ์ข‹์•„์š” ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”๐Ÿ’š

 

 

 

'๐Ÿ“๋ฌธ์ œ ํ’€์ด > ๐ŸงฉBaekjoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Python] ๋ฐฑ์ค€ 14502 ์—ฐ๊ตฌ์†Œ | BFS  (0) 2023.05.20
[Python] ๋ฐฑ์ค€ 4485 ๋…น์ƒ‰ ์˜ท ์ž…์€ ์• ๊ฐ€ ์ ค๋‹ค์ง€? | ๋‹ค์ต์ŠคํŠธ๋ผ  (0) 2023.05.18
[Python] ๋ฐฑ์ค€ 13549 ์ˆจ๋ฐ”๊ผญ์งˆ 3 | ๋‹ค์ต์ŠคํŠธ๋ผ  (0) 2023.05.17
[Python] ๋ฐฑ์ค€ 1916 ์ตœ์†Œ๋น„์šฉ ๊ตฌํ•˜๊ธฐ | ๋‹ค์ต์ŠคํŠธ๋ผ | ์‹œ๊ฐ„์ดˆ๊ณผ  (0) 2023.05.17
[Python] ๋ฐฑ์ค€ 11404 ํ”Œ๋กœ์ด๋“œ | ํ”Œ๋กœ์ด๋“œ ์›Œ์…œ  (0) 2023.05.16
    '๐Ÿ“๋ฌธ์ œ ํ’€์ด/๐ŸงฉBaekjoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Python] ๋ฐฑ์ค€ 14502 ์—ฐ๊ตฌ์†Œ | BFS
    • [Python] ๋ฐฑ์ค€ 4485 ๋…น์ƒ‰ ์˜ท ์ž…์€ ์• ๊ฐ€ ์ ค๋‹ค์ง€? | ๋‹ค์ต์ŠคํŠธ๋ผ
    • [Python] ๋ฐฑ์ค€ 13549 ์ˆจ๋ฐ”๊ผญ์งˆ 3 | ๋‹ค์ต์ŠคํŠธ๋ผ
    • [Python] ๋ฐฑ์ค€ 1916 ์ตœ์†Œ๋น„์šฉ ๊ตฌํ•˜๊ธฐ | ๋‹ค์ต์ŠคํŠธ๋ผ | ์‹œ๊ฐ„์ดˆ๊ณผ
    Hiya_
    Hiya_
    ํ•˜์–€ ์ฒœ๊ณผ ๋ฐ”๋žŒ๋งŒ ์žˆ๋‹ค๋ฉด ์–ด๋””๋“  ๊ฐˆ ์ˆ˜ ์žˆ์–ด

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”