DOJ logoDOJ
問題
最近追加された問題保存した問題Workbooks
カテゴリDLCコンテストグループチーム掲示板
ランキング
正解数ランキングストリークランキングDOJ Powerランキング
提出状況
問題募集ログイン新規登録
DOJ logoDOJ

OI形式のサブタスク採点、Eloレーティング、Discord連携を備えたオンラインジャッジです。

問題
問題一覧カテゴリ
コミュニティ
コンテストランキング掲示板お知らせ外部のコンテストを開催するガイド
アカウント
ログイン新規登録ジャッジ状態
ポリシー
利用規約DLCの利用規則プライバシーAPI 文書言語ランタイムコンテストの順位報酬レーティングとパフォーマンス
© 2026 DOJ
All rights reserved
解説

tsp

問題に戻る

解説

해밀턴 사이클은 회전해도 같은 사이클이므로 시작 정점을 111로 고정한다.

D[S][v]D[S][v]D[S][v]를 정점 111에서 출발하여 집합 SSS의 정점을 각각 한 번 방문하고 vvv에서 끝나는 경로의 최소 가중치로 정의한다. 초깃값은 D[{1}][1]=0D[\{1\}][1]=0D[{1}][1]=0이다. vvv에서 아직 방문하지 않은 uuu로 가는 간선이 있으면 D[S∪{u}][u]D[S\cup\{u\}][u]D[S∪{u}][u]를 D[S][v]+WvuD[S][v]+W_{vu}D[S][v]+Wvu​로 갱신한다.

모든 정점을 방문한 뒤 마지막 정점에서 111로 돌아가는 간선의 가중치를 더한다. 이 값들의 최솟값이 정답이다. 모든 값이 불가능하면 −1-1−1을 출력한다. 각 상태에 도달한 직전 정점을 저장하면 최적 사이클을 역추적할 수 있다. 000도 유효한 간선 가중치이므로 간선의 유무는 −1-1−1인지로 판단한다. 최대 비용은 18⋅10918\cdot10^918⋅10이므로 64비트 정수를 사용한다.

시간 복잡도는 O(N22N)O(N^2 2^N)O(N22N), 공간 복잡도는 O(N2N)O(N2^N)O(N2N)이다. 서브태스크 은 시작 정점을 고정하고 나머지 정점의 모든 순열을 검사할 수도 있다.

Solution written by GPT6

9
11
1