A1294 | [COCI-2013_2014-contest2]#4 PUTNIK
来源COCI
时间限制1s
内存限制128MB
通过 / 提交0/0
题目描述
Chances are that you have probably already heard of the travelling salesman problem. If you have, then you are aware that it is an NP-hard problem because it lacks an efficient solution. Well, this task is an uncommon version of the famous problem! Its uncommonness derives from the fact that this version is, actually, solvable.
The travelling salesman is on a mission to visit N cities, each exactly once. The cities are represented by numbers 1, 2, ..., N. What we know is the direct flight duration between each pair of cities. The salesman, being the efficient man that he is, wants to modify the city visiting sequence so that the total flight duration is the minimum possible.
Alas, all is not so simple. In addition, the salesman has a peculiar condition regarding the sequence. For each city labeled K must apply: either all cities with labels smaller than K have been visited before the city labeled K or they will all be visited after the city labeled K. In other words, the situation when one of such cities is visited before, and the other after is not allowed.
Assist the poor fellow in his ambitious mission and calculate the minimum total flight duration needed in order to travel to all the cities, starting from whichever and ending in whichever city, visiting every city exactly once, so that his peculiar request is fulfilled.
The travelling salesman is on a mission to visit N cities, each exactly once. The cities are represented by numbers 1, 2, ..., N. What we know is the direct flight duration between each pair of cities. The salesman, being the efficient man that he is, wants to modify the city visiting sequence so that the total flight duration is the minimum possible.
Alas, all is not so simple. In addition, the salesman has a peculiar condition regarding the sequence. For each city labeled K must apply: either all cities with labels smaller than K have been visited before the city labeled K or they will all be visited after the city labeled K. In other words, the situation when one of such cities is visited before, and the other after is not allowed.
Assist the poor fellow in his ambitious mission and calculate the minimum total flight duration needed in order to travel to all the cities, starting from whichever and ending in whichever city, visiting every city exactly once, so that his peculiar request is fulfilled.
输入格式
The first line of input contains the positive integer N (2 ≤ N ≤ 1500), the number of cities.
Each of the following N lines contains N positive integers from the interval [0, 1000]. The number in B th place in the A th row represents the flight duration between cities A and B; that number is equal to the A th number in the B th row. When A = B, that number is
0. Otherwise, it is a positive value.
Each of the following N lines contains N positive integers from the interval [0, 1000]. The number in B th place in the A th row represents the flight duration between cities A and B; that number is equal to the A th number in the B th row. When A = B, that number is
0. Otherwise, it is a positive value.
输出格式
The first and only line of output must contain the required minimum total flight duration.
输入输出样例
输入 #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
In test data worth 1/3 of total points, N will be at most 10.
In test data worth 1/2 of total points, N will be at most 20.
Clarification of the first example: the optimal sequence is 2, 1, 3 or 3, 1, 2. The sequence 1, 3, 2 is
even more favourable, but it does not fulfill the salesman's condition.
Clarification of the second example: the sequence is either 3, 1, 2, 4 or 4, 2, 1, 3.
In test data worth 1/2 of total points, N will be at most 20.
Clarification of the first example: the optimal sequence is 2, 1, 3 or 3, 1, 2. The sequence 1, 3, 2 is
even more favourable, but it does not fulfill the salesman's condition.
Clarification of the second example: the sequence is either 3, 1, 2, 4 or 4, 2, 1, 3.
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?
提交通过
评测结果:Accepted