#P2907. Collecting Beepers

    ID: 1908 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>搜索DFSSvenskt Mästerskap i Programmering/Norgesmesterskapet 2002

Collecting Beepers

题目描述

KarelKarel是一个生活在矩形坐标系中的机器人,每个位置由一组整数坐标xy(x和y)表示。你的任务是设计一个程序,帮助KarelKarel捡起放置在其世界中的若干个蜂鸣器。为此,你必须引导KarelKarel到达每个蜂鸣器所在的位置。你的工作是编写一个计算机程序,找出KarelKarel从起始位置出发,访问每个蜂鸣器后再返回起始位置的最短路径长度。

KarelKarel只能沿着x轴和y轴移动,不能斜着移动。从一个位置i,j(i, j)移动到相邻位置i,j+1(i, j+1)i,j1(i, j-1)i1,j(i-1, j)i+1,j(i+1, j)的代价为11

可以假设KarelKarel的世界不超过20×2020×20的方格,且需要捡起的蜂鸣器不超过1010个。每个坐标以x,y(x, y)对的形式给出,其中每个值的范围是11到对应坐标系方向的尺寸大小。

输入

首先有一行包含一个整数,表示需要帮助KarelKarel处理的场景数量。对于每个场景,首先有一行包含两个整数(xx尺寸和yy尺寸),表示世的大小。接下来一行包含两个数,表示KarelKarel的起始位置。再接下来一行包含一个数,表示蜂鸣器的数量。对于每个蜂鸣器,有一行包含两个数,表示每个蜂鸣器的坐标。

输出

每个场景输出一行,给出KarelKarel从起始位置出发,访问每个蜂鸣器后再返回起始位置的最短路径长度。

输入样例 1

1  
10 10  
1 1  
4  
2 3  
5 5  
9 4  
6 5  

输出样例 1

The shortest path has length 24  

来源

Svenskt Mästerskap i Programmering/Norgesmesterskapet 2002