์นดํ
๊ณ ๋ฆฌ ์์
[๋ฐฑ์ค ํ์ด์ฌ] 11404 ํ๋ก์ด๋
๋๋น์งฑ
2023. 10. 23. 21:47
728x90
๐๋ฌธ์ ์ถ์ฒ
๋ฐฑ์ค ๋จ๊ณ๋ณ ๋ฌธ์ ํ์ด : ์ต๋จ๊ฒฝ๋ก
https://www.acmicpc.net/problem/11404
11404๋ฒ: ํ๋ก์ด๋
์ฒซ์งธ ์ค์ ๋์์ ๊ฐ์ n์ด ์ฃผ์ด์ง๊ณ ๋์งธ ์ค์๋ ๋ฒ์ค์ ๊ฐ์ m์ด ์ฃผ์ด์ง๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์งธ ์ค๋ถํฐ m+2์ค๊น์ง ๋ค์๊ณผ ๊ฐ์ ๋ฒ์ค์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. ๋จผ์ ์ฒ์์๋ ๊ทธ ๋ฒ์ค์ ์ถ๋ฐ ๋์์ ๋ฒํธ๊ฐ
www.acmicpc.net
โ ๋ฌธ์
๐ ํ์ด ์ฝ๋
input = open(0).readline
def solution(n):
for k in range(1,n+1): # ์ค๊ฐ์ 1~n๊น์ง์ ์ ๋ฅ์ฅ์ ๋ค๋ ๋ค๊ฐ๋ ๊ฒฝ์ฐ
for i in range(1,n+1): # ์ถ๋ฐ ์ ๋ฅ์ฅ
for j in range(1,n+1): # ๋์ฐฉ ์ ๋ฅ์ฅ
dp[i][j] = min(dp[i][j], dp[i][k]+dp[k][j]) # ํ์ฌ i์์ j์ ๊ฒฝ๋ก ๋ณด๋ค k๋ฅผ ๋ค๋ ๋ค๊ฐ๋ ๊ฒ์ด ๋น ๋ฅด๋ค๋ฉด
for i in range(1,n+1): # 1~n ์ ๋ฅ์ฅ ํ์ธ
ans = ''
for j in range(1,n+1):
cost = dp[i][j]
ans += str(0) if cost == inf else str(cost)
ans += ' '
print(ans[:-1])
return
if __name__ == '__main__':
n = int(input())
m = int(input())
inf = float('inf')
dp = [[inf]*(n+1) for _ in range(n+1)] # dp ์์ฑ
for i in range(n+1) : # ์ถ๋ฐ ๋์ฐฉ์ด ๊ฐ์ ๊ฒฝ์ฐ๋ 0
dp[i][i] = 0
for _ in range(m):
sta,end,w = map(int,input().split())
dp[sta][end] = min(dp[sta][end], w) # ๋์ผํ ์ถ๋ฐ, ๋์ฐฉ์ง์ ๋ค๋ฅธ ๋
ธ์ ์ด ๋ค์ด์ฌ ์ ์์ผ๋ฏ๋ก
solution(n)