#P15349. [TOIP 2025] 巡視農場
[TOIP 2025] 巡視農場
说明
有一群人到了一个蛮荒之地开垦,经过很多努力,开辟了 个农场,他们也开辟了一些道路连接这些农场,每一条道路连接两个不同的农场。由于道路开辟困难,总共只开辟了 条道路,但任何两个农场之间,都有长度大于零的路径直接或间接连接。王老先生拥有其中的 个农场,不过这些农场不一定全部直接连接在一起,可能有两个王老先生的农场之间,需要经过其他人的农场才能互相来回。
王老先生将他的农场由 到 编号,其中 号农场也是他的住家。他记录了他的任两个农场之间的距离,想要规划出一条从住家( 号农场)出发、巡视经过所有他的农场、最后回到住家的最短路径。当然,对于规划出的路径,各个农场经过的顺序与次数皆不限定,中间也可以经过其他人的农场。注意到王老先生并没有其他农场的信息,因此王老先生只能通过这 个农场两两之间的距离来计算最短路径。
请你撰写一个程序,帮王老先生计算出最短的路径长度,满足该路径能巡视经过所有他的农场,最后回到住家。
举例来说,假设 ,而王老先生拥有其中的 个农场。下图表示了所有 个农场的结构,其中王老先生的农场被标上了 的编号:
:::align{center}
:::
由于王老先生记录了他的任两个农场之间的距离,我们可以将这些距离表示成如下的距离矩阵 ,其中 (第 列的第 行)是农场 到 的距离。可以发现,一个距离矩阵必然是对称矩阵且对角线均为 :
$$\begin{array}{|c|c|c|c|} \hline 0 & 4 & 8 & 10\\ \hline 4 & 0 & 6 & 8\\ \hline 8 & 6 & 0 & 2\\ \hline 10 & 8 & 2 & 0\\ \hline \end{array}$$而通过距离矩阵提供给我们的信息,可以找出在这个例子中,最短的路径是 ,长度为 。
输入格式
$$\begin{aligned} &n \\ &d_{1,1} \; d_{1,2} \; d_{1,3} \; \cdots \; d_{1,n} \\ &d_{2,1} \; d_{2,2} \; d_{2,3} \; \cdots \; d_{2,n} \\ &d_{3,1} \; d_{3,2} \; d_{3,3} \; \cdots \; d_{3,n} \\ &\vdots \\ &d_{n,1} \; d_{n,2} \; d_{n,3} \; \cdots \; d_{n,n} \end{aligned}$$- 代表王老先生拥有的农场个数。
- 代表农场 到 的距离。
- 题目叙述中提到的 并不会出现在输入中。
输出格式
- 为一正整数,代表王老先生从 号农场出发、巡视经过所有他的农场、最后回到 号农场的最短路径长度。
3
0 2 4
2 0 2
4 2 0
8
4
0 4 8 10
4 0 6 8
8 6 0 2
10 8 2 0
22
提示
数据限制
- 。
- 。
- 若 ,则 。
- 若 ,则 。
- 对于所有 ,。
- 保证存在一个正整数 ,满足存在一个 点 条边、每条边长度都大于零的连通图,满足 为在其上取 个点后的距离矩阵。
- 输入的数字皆为整数。
评分说明
本题共有六组子任务,条件限制如下所示。每一组可有一或多笔测试数据,该组所有测试数据皆需答对才会获得该组分数。
| 子任务 | 分数 | 额外输入限制 |
|---|---|---|
| 1 | 7 | 。 |
| 2 | 12 | 。 |
| 3 | 13 | 且 ,也就是所有的农场都是王老先生的。 |
| 4 | 21 | ,也就是所有的农场都是王老先生的。 |
| 5 | 23 | 。 |
| 6 | 24 | 无额外限制。 |
京公网安备 11011102002149号