728x90

주어진 도시의 개수가 작은 걸 보고 순열로 풀었다. 마지막 -> 처음 을 고려해주어야 한다.

import sys
from itertools import permutations
 
def check(list,k):
 
    answer = 0
 
    # list = [0,1,2,3]
 
    if k[list[-1]][list[0]] == 0:
        return 100000000000
    else:
        answer += k[list[-1]][list[0]]
 
    for i in range(0,len(list)-1):
 
        start = list[i]
        end = list[i+1]
 
        if  k[start][end] == 0:
            return 100000000000
 
        else:
            answer += k[start][end]
 
    return answer
 
 
 
num = int(input())
 
city = [ ]
 
for i in range(0,num):
    city.append(i)
 
k = [ ]
 
for i in range(num):
    k.append(list(map(int,input().split(" "))))
 
 
temp = list(permutations(city))
 
answer = 100000000000
 
 
 
 
for i in range(0,len(temp)):    
 
    if check(list(temp[i]),k) < answer:
        answer = check(temp[i],k)
 
 
print(answer)
 
 
 
 
 
 
728x90

+ Recent posts