βλ¬Έμ
https://www.acmicpc.net/problem/11404
λ©λͺ¨λ¦¬: 111660 KB, μκ°: 164 ms
κ·Έλν μ΄λ‘ , μ΅λ¨ κ²½λ‘, νλ‘μ΄λ–μμ
n(2 ≤ n ≤ 100)κ°μ λμκ° μλ€. κ·Έλ¦¬κ³ ν λμμμ μΆλ°νμ¬ λ€λ₯Έ λμμ λμ°©νλ m(1 ≤ m ≤ 100,000)κ°μ λ²μ€κ° μλ€. κ° λ²μ€λ ν λ² μ¬μ©ν λ νμν λΉμ©μ΄ μλ€.
λͺ¨λ λμμ μ (A, B)μ λν΄μ λμ Aμμ Bλ‘ κ°λλ° νμν λΉμ©μ μ΅μκ°μ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
βπ»νμ΄
νλ‘μ΄λ μμ μκ³ λ¦¬μ¦μ ꡬννλ©΄ λλ€.
aμμ bλ‘ κ°λλ° μ€κ°μ λ€λ₯Έ λμλ₯Ό κ²½μ νλ κ²½μ°μ ν λ²μ κ°λ κ²½μ° μ€ κ°μ€μΉκ° μ΅μμΈ κ²½μ°λ₯Ό κΈ°λ‘νλ©΄ λλ€.
κ°μ€μΉ κ³μ°μ΄ λλκ³ μΆλ ₯ν λ aμμ bλ‘ κ° μ μλ κ³³μ 0μΌλ‘ μΆλ ₯ν΄μΌ νλ€.
π»μ½λ
import sys
input = sys.stdin.readline
# n = bus(vertex), m = busline(edge)
n = int(input())
m = int(input())
INF = 1e9
cities = [[0 if a == b else INF for b in range(n)] for a in range(n)]
for _ in range(m):
a, b, c = map(int, input().split())
cities[a-1][b-1] = min(cities[a-1][b-1], c)
for k in range(n):
for a in range(n):
for b in range(n):
cities[a][b] = min(cities[a][b], cities[a][k] + cities[k][b])
for a in range(n):
for b in range(n):
print(0 if cities[a][b] == INF else cities[a][b], end=' ')
print()
πνκΈ°
μΆλ ₯λΆλΆμ μ λλ‘ μ μ½μ΄μ κ³μ νλ Έλ€κ° λ§μλ€...
'Coding Test > Algorithms' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 9655. λ κ²μ/Python - Silver5 (1) | 2025.08.11 |
---|---|
[λ°±μ€] 2630. μμ’ μ΄ λ§λ€κΈ°/Python - Silver2 (0) | 2025.08.10 |
[λ°±μ€] 14500. ν νΈλ‘λ―Έλ Έ/Python - Gold4 (2) | 2025.08.06 |
[λ°±μ€] 14502. μ°κ΅¬μ/Python - Gold4 (0) | 2025.08.03 |
[λ°±μ€] 14499. μ£Όμ¬μ ꡴리기/Python - Gold4 (4) | 2025.08.02 |