QOJ.ac

QOJ

実行時間制限: 1.0 s メモリ制限: 32 MB 満点: 120

#16407. PUTNIK

統計

你可能已经听说过旅行商问题(TSP)。如果是这样,你一定知道它是一个 NP-hard 问题,因为目前还没有高效的解决方案。不过,本题是这个著名问题的一个不寻常的版本!它的不寻常之处在于,这个版本实际上是可解的。

旅行商的任务是访问 $N$ 个城市,每个城市恰好访问一次。这些城市用数字 $1, 2, \dots, N$ 表示。我们已知每对城市之间的直飞航班耗时。这位高效的旅行商希望调整访问城市的顺序,使得总飞行时间尽可能短。

然而,事情并没有那么简单。此外,旅行商对访问顺序有一个奇特的限制。对于每个编号为 $K$ 的城市,必须满足以下条件之一:要么所有编号小于 $K$ 的城市都在城市 $K$ 之前被访问,要么它们都在城市 $K$ 之后被访问。换句话说,不允许出现某些编号小于 $K$ 的城市在 $K$ 之前访问,而另一些在 $K$ 之后访问的情况。

请帮助这位雄心勃勃的旅行商,计算出从任意城市出发并在任意城市结束、每个城市恰好访问一次且满足其奇特要求的最小总飞行时间。

输入格式

输入的第一行包含一个正整数 $N$ ($2 \le N \le 1500$),表示城市的数量。

接下来的 $N$ 行,每行包含 $N$ 个范围在 $[0, 1000]$ 内的非负整数。第 $A$ 行的第 $B$ 个数字表示城市 $A$ 和城市 $B$ 之间的飞行时间;该数字等于第 $B$ 行的第 $A$ 个数字。当 $A = B$ 时,该数字为 $0$。否则,它是一个正数。

输出格式

输出的第一行也是唯一的一行,应包含所需的最小总飞行时间。

子任务

在占总分 $1/3$ 的测试数据中,$N$ 最多为 $10$。

在占总分 $1/2$ 的测试数据中,$N$ 最多为 $20$。

样例

输入样例 1

3
0 5 2
5 0 4
2 4 0

输出样例 1

7

输入样例 2

4
0 15 7 8
15 0 16 9
7 16 0 12
8 9 12 0

输出样例 2

31

说明

样例 1 说明:最优序列为 2, 1, 3 或 3, 1, 2。序列 1, 3, 2 虽然用时更短,但不满足旅行商的条件。

样例 2 说明:最优序列为 3, 1, 2, 4 或 4, 2, 1, 3。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.