π‘ 쑰건
- Nκ°μ μ«μλ‘ κ΅¬λΆλ κ°κ°μ λ§μμ ν λͺ
μ νμμ΄ μ΄κ³ μλ€.
- Nλͺ
μ νμμ΄ X (1 β€ X β€ N)λ² λ§μμ λͺ¨μ¬μ νν°λ₯Ό λ²μ΄κΈ°λ‘ νλ€.
μ΄ λ§μ μ¬μ΄μλ μ΄ Mκ°μ λ¨λ°©ν₯ λλ‘λ€μ΄ μκ³ iλ²μ§Έ κΈΈμ μ§λλλ° Ti(1 β€ Ti β€ 100)μ μκ°μ μλΉνλ€.
- κ°κ°μ νμλ€μ νν°μ μ°ΈμνκΈ° μν΄ κ±Έμ΄κ°μ λ€μ κ·Έλ€μ λ§μλ‘ λμμμΌ νλ€.
νμ§λ§ μ΄ νμλ€μ μλ κ²μλ¬μ μ΅λ¨ μκ°μ μ€κ³ κ°κΈ°λ₯Ό μνλ€.
- μ΄ λλ‘λ€μ λ¨λ°©ν₯μ΄κΈ° λλ¬Έμ μλ§ κ·Έλ€μ΄ μ€κ³ κ°λ κΈΈμ΄ λ€λ₯Όμ§λ λͺ¨λ₯Έλ€.
Nλͺ
μ νμλ€ μ€ μ€κ³ κ°λλ° κ°μ₯ λ§μ μκ°μ μλΉνλ νμμ λꡬμΌμ§ ꡬνμ¬λΌ.
- N(1 β€ N β€ 1,000), M(1 β€ M β€ 10,000), Xκ° κ³΅λ°±μΌλ‘ ꡬλΆλμ΄ μ
λ ₯λλ€.
μμμ κ³Ό λμ μ΄ κ°μ λλ‘λ μμΌλ©°, μμμ κ³Ό ν λμ Aμμ λ€λ₯Έ λμ Bλ‘ κ°λ λλ‘μ κ°μλ μ΅λ 1κ°μ΄λ€.
λͺ¨λ νμλ€μ μ§μμ Xμ κ°μ μκ³ , Xμμ μ§μΌλ‘ λμμ¬ μ μλ λ°μ΄ν°λ§ μ
λ ₯μΌλ‘ μ£Όμ΄μ§λ€.
- κ·Έλννμ, λ€μ΅μ€νΈλΌ μ νμ λ¬Έμ
π₯ μμ€ μ½λ
from sys import stdin
import heapq
n, m, x = map(int, stdin.readline().split())
graph = [[] for _ in range(n + 1)]
ans = [0 for _ in range(n)]
for _ in range(m):
a, b, c = map(int, stdin.readline().split())
graph[a].append((c, b))
def solve(start):
q = []
heapq.heappush(q, (0, start))
dist = [int(1e9) for _ in range(n + 1)]
dist[start] = 0
while q:
cost, now = heapq.heappop(q)
for d, next_pos in graph[now]:
if dist[next_pos] > cost + d:
dist[next_pos] = cost + d
heapq.heappush(q, (cost + d, next_pos))
return dist
r = -1
for i in range(1, n + 1):
if i != x:
go = solve(i)[x]
goal = solve(x)[i]
r = max(r, go + goal)
print(r)
π μμ λ° μ€νκ²°κ³Ό
μμ
4 8 2
1 2 4
1 3 2
1 4 7
2 1 1
2 3 5
3 1 2
3 4 4
4 2 3
μ€νκ²°κ³Ό
10
β¨οΈ λ¬Έμ νμ΄
- "μ΅λ¨ μκ°μ μ€κ³ κ°κΈ°λ₯Ό μνλ€." λΌλ λλͺ©μμ λ€μ΅μ€νΈλΌλ₯Ό μκ°ν΄λ³Ό μ μλ€.
λν λ¬Έμ μμ Mκ°μ λ¨λ°©ν₯ λλ‘λ€μ΄ μλ€λ μ λ³΄κ° μλ€.
- (1)λ²μ μ 보λ₯Ό ν΅ν΄ λ¨λ°©ν₯ κ·Έλνμμ μ΅λ¨κ±°λ¦¬λ₯Ό μ°ΎμΌλ©΄ λλ€λ κ²°λ‘ μ΄ λμ¨λ€.