10971. 외판원 순회 2

2025. 1. 28. 09:53·백준

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

import sys
input = sys.stdin.readline

n = int(input())
link = [list(map(int, input().split())) for _ in range(n)]
visited = [False] * n
min_cost = float('inf')

def dfs(start, current, count, cost):
    global min_cost

    # 모든 도시를 방문하고 시작점으로 돌아왔을 때
    if count == n and link[current][start] > 0:
        min_cost = min(min_cost, cost + link[current][start])
        return

    # 가지치기: 현재 비용이 최소 비용보다 크면 중단
    if cost >= min_cost:
        return

    for i in range(n):
        if not visited[i] and link[current][i] > 0:
            visited[i] = True
            dfs(start, i, count + 1, cost + link[current][i])
            visited[i] = False

# 모든 도시를 시작점으로 탐색
for i in range(n):
    visited[i] = True
    dfs(i, i, 1, 0)
    visited[i] = False

print(min_cost)
저작자표시 (새창열림)

'백준' 카테고리의 다른 글

백준 5427. 불  (0) 2025.01.29
백준 10026. 적록색약  (0) 2025.01.29
백준 11724. 연결 요소의 개수  (0) 2025.01.28
백준 4179. 불!  (0) 2025.01.26
백준 1726. 로봇  (0) 2025.01.26
'백준' 카테고리의 다른 글
  • 백준 5427. 불
  • 백준 10026. 적록색약
  • 백준 11724. 연결 요소의 개수
  • 백준 4179. 불!
버그잡는고양이발
버그잡는고양이발
주니어 개발자입니다!
  • 버그잡는고양이발
    지극히평범한개발블로그
    버그잡는고양이발
  • 전체
    오늘
    어제
    • 분류 전체보기 (382)
      • React (16)
      • Next.js (5)
      • Javascript (5)
      • Typescript (4)
      • Node.js (2)
      • Cs (16)
      • 트러블 슈팅 (5)
      • Html (1)
      • Css (3)
      • Django (0)
      • vue (0)
      • Java (2)
      • Python (0)
      • 독서 (1)
      • 기타 (3)
      • 백준 (192)
      • swea (31)
      • 프로그래머스 (30)
      • 이코테 (4)
      • 99클럽 코테 스터디 (30)
      • ssafy (31)
      • IT기사 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 인기 글

  • 태그

    항해99
    코딩테스트준비
    99클럽
    개발자취업
    Til
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
버그잡는고양이발
10971. 외판원 순회 2
상단으로

티스토리툴바