λ¬Έμ
Nκ°μ μ«μλ‘ κ΅¬λΆλ κ°κ°μ λ§μμ ν λͺ μ νμμ΄ μ΄κ³ μλ€.
μ΄λ λ μ΄ Nλͺ μ νμμ΄ X (1 ≤ X ≤ N)λ² λ§μμ λͺ¨μ¬μ νν°λ₯Ό λ²μ΄κΈ°λ‘ νλ€. μ΄ λ§μ μ¬μ΄μλ μ΄ Mκ°μ λ¨λ°©ν₯ λλ‘λ€μ΄ μκ³ iλ²μ§Έ κΈΈμ μ§λλλ° Ti(1 ≤ Ti ≤ 100)μ μκ°μ μλΉνλ€.
κ°κ°μ νμλ€μ νν°μ μ°ΈμνκΈ° μν΄ κ±Έμ΄κ°μ λ€μ κ·Έλ€μ λ§μλ‘ λμμμΌ νλ€. νμ§λ§ μ΄ νμλ€μ μλ κ²μλ¬μ μ΅λ¨ μκ°μ μ€κ³ κ°κΈ°λ₯Ό μνλ€.
μ΄ λλ‘λ€μ λ¨λ°©ν₯μ΄κΈ° λλ¬Έμ μλ§ κ·Έλ€μ΄ μ€κ³ κ°λ κΈΈμ΄ λ€λ₯Όμ§λ λͺ¨λ₯Έλ€. Nλͺ μ νμλ€ μ€ μ€κ³ κ°λλ° κ°μ₯ λ§μ μκ°μ μλΉνλ νμμ λꡬμΌμ§ ꡬνμ¬λΌ.
μ λ ₯
첫째 μ€μ N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), Xκ° κ³΅λ°±μΌλ‘ ꡬλΆλμ΄ μ λ ₯λλ€. λ λ²μ§Έ μ€λΆν° M+1λ²μ§Έ μ€κΉμ§ iλ²μ§Έ λλ‘μ μμμ , λμ , κ·Έλ¦¬κ³ μ΄ λλ‘λ₯Ό μ§λλλ° νμν μμμκ° Tiκ° λ€μ΄μ¨λ€. μμμ κ³Ό λμ μ΄ κ°μ λλ‘λ μμΌλ©°, μμμ κ³Ό ν λμ Aμμ λ€λ₯Έ λμ Bλ‘ κ°λ λλ‘μ κ°μλ μ΅λ 1κ°μ΄λ€.
λͺ¨λ νμλ€μ μ§μμ Xμ κ°μ μκ³ , Xμμ μ§μΌλ‘ λμμ¬ μ μλ λ°μ΄ν°λ§ μ λ ₯μΌλ‘ μ£Όμ΄μ§λ€.
μΆλ ₯
첫 λ²μ§Έ μ€μ Nλͺ μ νμλ€ μ€ μ€κ³ κ°λλ° κ°μ₯ μ€λ 걸리λ νμμ μμμκ°μ μΆλ ₯νλ€.
https://www.acmicpc.net/problem/1238
π‘ νμ΄ λ° μ½λ
import heapq
import sys
input = sys.stdin.readline
INF = int(1e9)
n, m, x = map(int, input().split())
graph = [[] for _ in range(n+1)]
for _ in range(m):
a, b, c = map(int, input().split())
graph[a].append((b, c))
distance_a = []
for i in range(1, n+1):
hq = []
heapq.heappush(hq, (0, i))
d = [INF] * (n+1)
d[i] = 0
while hq:
dist, now = heapq.heappop(hq)
if d[now] < dist:
continue
for i in graph[now]:
cost = dist + i[1]
if cost < d[i[0]]:
d[i[0]] = cost
heapq.heappush(hq, (cost, i[0]))
distance_a.append(d[x])
hq = []
heapq.heappush(hq, (0, x))
distance_b = [INF] * (n+1)
distance_b[x] = 0
while hq:
dist, now = heapq.heappop(hq)
if distance_b[now] < dist:
continue
for i in graph[now]:
cost = dist + i[1]
if cost < distance_b[i[0]]:
distance_b[i[0]] = cost
heapq.heappush(hq, (cost, i[0]))
result = 0
for i in range(1, n+1):
result = max(result, distance_a[i-1] + distance_b[i])
print(result)
μ΅λ¨κ²½λ‘(λ€μ΅μ€νΈλΌ) λ¬Έμ μ΄λ€. λ¨Όμ , κ° λ§μμμ X λ§μ κΉμ§μ μ΅λ¨ 거리λ₯Ό κ΅¬ν΄ λ°°μ΄μ μ μ₯νκ³ , Xλ§μλ‘ λΆν° κ° λ§μ κΉμ§μ μ΅λ¨ 거리λ₯Ό λ°λ‘ ꡬνλ€. μ΄ν, κ° λ§μμ λν΄ X λ§μ κΉμ§μ μ΅λ¨ 거리μ λ€μ λμμ€λ κΈΈμ μ΅λ¨ 거리λ₯Ό ν©ν΄ μ΄ ν©μ΄ κ°μ₯ ν° λ§μμ μΆλ ₯ν΄ μ£Όλ©΄ λλ€.
'Algorithm > π Baekjoon Judge' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ] λ°±μ€ 14500λ² ν νΈλ‘λ―Έλ Έ - νμ΄μ¬(Python) (0) | 2022.03.31 |
---|---|
[BOJ] λ°±μ€ 3190λ² λ± - νμ΄μ¬(Python) (3) | 2022.02.23 |
[BOJ] λ°±μ€ 1261λ² μκ³ μ€ν - νμ΄μ¬(Python) (0) | 2022.01.19 |
[BOJ] λ°±μ€ 11000λ² κ°μμ€ λ°°μ - νμ΄μ¬(Python) (0) | 2022.01.10 |
[BOJ] λ°±μ€ 2212λ² μΌμ - νμ΄μ¬(Python) (0) | 2022.01.10 |