DOJ logoDOJ
题目
最近添加的题目收藏的题目Workbooks
分类DLC比赛小组团队讨论区
排名
解题数量排行榜连续解题排名DOJ Power 排行榜
评测状态
征题登录注册
DOJ logoDOJ

支持 OI 子任务计分、Elo 等级分和 Discord 账号绑定的社区在线评测系统。

题目
题目列表分类
社区
比赛排名讨论区公告举办外部比赛指南
账号
登录注册评测状态
政策
服务条款DLC 使用规则隐私政策API 文档语言运行环境比赛排名奖励评级与表现
© 2026 DOJ
保留所有权利
题解

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