첫째 줄에 도시의 수를 입력
둘째 줄부터 N+1번째 까지 N*N의 cost 맵을 입력
모든 도시를 방문했을 때의 최소 cost 값
for i in range(N):
visited = [False]*N
dfs(i, i, N, 0, visited)
def dfs(start, cur, rm, cnt, visited):
global _map, ans
if cnt >= ans: return
if start == cur and rm == 0:
ans = min(ans, cnt)
return
for j in range(N):
if j != cur and visited[j] == False and _map[cur][j] != 0:
visited[j] = True
dfs(start, j, rm-1, cnt+_map[cur][j], visited)
visited[j] = False