hugDog
Android DevLog
hugDog
전체 방문자
였늘
μ–΄μ œ
  • πŸ™Œ Hello? (162)
    • πŸ§©μ•ˆλ“œλ‘œμ΄λ“œ (12)
      • κ°œλ… 정리 (5)
      • 버그 ν•΄κ²° (4)
      • 기타 (3)
    • πŸ”μ•Œκ³ λ¦¬μ¦˜ (54)
      • κ°œλ… (0)
      • λ°±μ€€ (48)
      • ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ (6)
    • πŸ“„κ°œλ°œ 일지 (0)
      • FINPO (0)
    • πŸ”€ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄ (71)
      • C++ 정리 (49)
      • C++κΈ°μ΄ˆν”ŒλŸ¬μŠ€ μ—°μŠ΅λ¬Έμ œ (20)
      • Kotlin (2)
    • ⭐Project (1)
    • 🚴TIL (13)
      • Clean Code (13)
    • πŸš©κΈ°νƒ€ (9)
      • λͺ©ν‘œ (6)
      • 일상 (3)
      • λ¬Έμ„œ (0)

인기 κΈ€

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
hugDog

Android DevLog

[Python/파이썬] λ°±μ€€ 1238번: νŒŒν‹°
πŸ”μ•Œκ³ λ¦¬μ¦˜/λ°±μ€€

[Python/파이썬] λ°±μ€€ 1238번: νŒŒν‹°

2021. 12. 23. 14:11
728x90

문제

풀이

λ‹€μ΅μŠ€νŠΈλΌ μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•˜λ©΄ λœλ‹€.

단, 학생듀이 λ§ˆμ„λ‘œ λŒμ•„κ°€λŠ” κ²½μš°λ„ ꡬ해야 ν•˜λŠ”λ°, μ΄λ•Œμ˜ 간선은 μ£Όμ–΄μ§„ μž…λ ₯의 μ‹œμž‘μ κ³Ό 끝점을 μ„œλ‘œ λ°”κΎΈλ©΄ λœλ‹€.

 

μ½”λ“œ

from sys import stdin
import heapq

input = stdin.readline

n, m, x = map(int, input().split())

toX = [[] for _ in range(n + 1)] #μ§‘μ—μ„œ νŒŒν‹° λ§ˆμ„λ‘œ κ°€λŠ” μ΅œλ‹¨ 경둜
toHome = [[] for _ in range(n + 1)] #νŒŒν‹° λ§ˆμ„μ—μ„œ μ§‘μœΌλ‘œ κ°€λŠ” μ΅œλ‹¨ 경둜

for _ in range(m):
      a, b, t = map(int, input().split())
      toX[a].append((b, t))
      toHome[b].append((a, t))

def dijk(graph, start):
      distance = [1e9] * (n + 1)
      q = []
      heapq.heappush(q, (0, start))
      distance[start] = 0
      while q:
            dist, now = heapq.heappop(q)
            if distance[now] < dist:
                  continue
            for i in graph[now]:
                  cost = dist + i[1]
                  if cost < distance[i[0]]:
                        distance[i[0]] = cost
                        heapq.heappush(q, (cost, i[0]))
      return distance[1:]

print(max([a+b for a, b in zip(dijk(toX, x), dijk(toHome, x))]))

 

마무리

맨 μ²˜μŒμ—λŠ” μ‹œμž‘μ κ³Ό 끝점을 λ°”κΏ€ 생각을 ν•˜μ§€ λͺ»ν•΄ i (1<= i <=n) λ…Έλ“œμ˜ distance[x] 값을 κ΅¬ν•œ λ’€, κ·Έ 값을 x λ…Έλ“œμ˜ distance[i]에 λ”ν•΄μ£Όμ—ˆλ‹€. λ¬Έμ œλŠ” ν’€ 수 μžˆμœΌλ‚˜ 아직 μ‹€λ ₯이 많이 뢀쑱함을 λŠκΌˆλ‹€...

728x90
μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)
    'πŸ”μ•Œκ³ λ¦¬μ¦˜/λ°±μ€€' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [Python/파이썬] λ°±μ€€ 1865번: μ›œν™€
    • [Python/파이썬] λ°±μ€€ 5014번: μŠ€νƒ€νŠΈλ§ν¬
    • [Python/파이썬] λ°±μ€€ 14938번: μ„œκ°•κ·ΈλΌμš΄λ“œ
    • [Python/파이썬] λ°±μ€€ 11444번: ν”Όλ³΄λ‚˜μΉ˜ 수 6
    hugDog
    hugDog
    μ•ˆλ“œλ‘œμ΄λ“œ 곡뢀 쀑인 ν•™μƒμž…λ‹ˆλ‹€!

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”