백준 python 기록

백준 10971 파이썬 외판원 순환2

작지 2021. 10. 14. 20:59

백준 링크:https://www.acmicpc.net/problem/10971

 

10971번: 외판원 순회 2

첫째 줄에 도시의 수 N이 주어진다. (2 ≤ N ≤ 10) 다음 N개의 줄에는 비용 행렬이 주어진다. 각 행렬의 성분은 1,000,000 이하의 양의 정수이며, 갈 수 없는 경우는 0이 주어진다. W[i][j]는 도시 i에서 j

www.acmicpc.net

 

 

DFS 브루트포스로 해결했음. PYPY로 제출함.

import sys
n=int(input())

s=[list(map(int,sys.stdin.readline().split())) for i in range(n)]

min_value = sys.maxsize
visited=[False for _ in range(n)]

def dfs(start,cur,cost):
    global  s, visited, min_value

    if start == cur and visited.count(False) == 0:
        min_value = min(min_value,cost)


    for i in range(n):
        if not s[cur][i] == 0 and not visited[i]:
            visited[i] = True
            dfs(start,i,cost+s[cur][i])
            visited[i] = False

dfs(0,0,0)
print(min_value)