์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

[๋ฐฑ์ค€ ํŒŒ์ด์ฌ] 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)