Computer Science/알고리즘

[백준 - Python] 1507 - 궁금한 민호

바보1 2023. 3. 27. 14:38

0.  문제 링크

 

 

https://www.acmicpc.net/problem/1507

 

1507번: 궁금한 민호

강호는 N개의 도시로 이루어진 나라에 살고 있다. 각 도시는 M개의 도로로 연결되어 있으며, 각 도로를 지날 때 필요한 시간이 존재한다. 도로는 잘 연결되어 있기 때문에, 도시 A에서 B로 이동할

www.acmicpc.net


1.  풀이 방법

 

 

 


2.  코드

 

 

import sys
from itertools import permutations
input = sys.stdin.readline


def sol():
    flag = [[True] * n for _ in range(n)]
    for i, j, k in permutations([*range(n)], 3):
        if maps[i][k] == maps[i][j] + maps[j][k]:
            flag[i][k] = False
        elif maps[i][k] > maps[i][j] + maps[j][k]:
            return -1
    else:
        val = 0
        for i in range(n):
            for j in range(i, n):
                if flag[i][j]:
                    val += maps[i][j]

    return val


if __name__ == "__main__":
    n = int(input())
    maps = [list(map(int, input().split())) for _ in range(n)]
    print(sol())

3.  마무리