์ค๋ฒ1 : ์ต๋จ๊ฑฐ๋ฆฌ ๋ฌธ์ ์ด๋ค.
์๊ฐ
- ๋ชจ๋ ๊ฒฝ๋ก์ ๋ํ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํด์ผ ํ๋ค.
- ๊ฐ์ค์น๋ ์์์ด์ ๋์ผ
- ์ ์ ๊ฐ์ 100๊ฐ
๋ชจ๋ ๊ฒฝ๋ก์ ๋ํด ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํด์ผ ํ๋ค๋ ์ ์์ ํ๋ฃจ์ด๋๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๊ณ , ์๊ณ ๋ฆฌ์ฆ์๋ ํต๊ณผํ ๋ ธ๋ ๊ฐ์์ด๋ฏ๋ก ์งํํ๋ค. (์ ํ์๊ฐ 1์ด)
Code
import sys
def read_input():
n = int(sys.stdin.readline().rstrip())
w = [
[int(x) if int(x) != 0 else 100000 for x in sys.stdin.readline().split()]
for y in range(n)
]
d = w
p = [[int(0) for x in range(n)] for y in range(n)]
return n, w, d, p
def allShortestPath(n, w, d, p):
for k in range(n):
for i in range(n):
for j in range(n):
if d[i][j] > d[i][k - 1] + d[k - 1][j]:
p[i][j] = k
d[i][j] = d[i][k - 1] + d[k - 1][j]
for i in range(n):
for j in range(n):
if d[i][j] == 100000:
d[i][j] = 0
else:
d[i][j] = 1
return d, p
def path(start, end, p):
return
def printOutput(mat):
n = len(mat)
m = len(mat[0])
for i in range(n):
for j in range(m):
print(mat[i][j], end=" ")
print()
n, w, d, p = read_input()
d, p = allShortestPath(n, w, d, p)
printOutput(d)