728x90
반응형
https://www.acmicpc.net/problem/1507
1507번: 궁금한 민호
강호는 N개의 도시로 이루어진 나라에 살고 있다. 각 도시는 M개의 도로로 연결되어 있으며, 각 도로를 지날 때 필요한 시간이 존재한다. 도로는 잘 연결되어 있기 때문에, 도시 A에서 B로 이동할
www.acmicpc.net
문제 해결
플로이드-위셜 방법을 써야한다는 것은 쉽게 알 수 있었다.
하지만 어떻게 끊는 것을 구현할 지 생각이 나지 않았는데 check를 통해서 끊게 된다면 check[i][j]=0을 통해 이를 저장할 수 있었다.
CODE
import sys
input = sys.stdin.readline
def main():
result = 0
for k in range(n):
for i in range(n):
for j in range(n):
if i == j or j == k or i == k: continue
if board[i][j] == board[i][k] + board[k][j]:
check[i][j] = 0
elif board[i][j] > board[i][k] + board[k][j]:
result = -1
if result != -1:
for i in range(n):
for j in range(i+1, n):
if check[i][j]:
result += board[i][j]
print(result)
if __name__ == "__main__":
n = int(input())
board = [list(map(int, input().split())) for _ in range(n)]
check = [[1 for _ in range(n)] for _ in range(n)]
main()
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 14582 오늘도 졌다 (0) | 2024.04.14 |
---|---|
[python] 백준 2643 색종이 올려 놓기 (0) | 2024.04.08 |
[python] 백준 2436 공약수 (0) | 2024.04.04 |
[python] 백준 11562 백양로 브레이크 (1) | 2024.04.03 |
[python] 백준 5376 소수를 분수로 (0) | 2024.03.28 |
댓글