SP7805 KITROB - Kitchen Robot
题目描述
机器人现在越来越普及,不仅在工厂中占有一席之地,也逐渐走入了家庭。一个程序员与他的朋友们决定制作一个家用机器人。众所周知,程序员在聚会时常常会喝啤酒,聚会结束后,桌子上总是会留下许多空瓶子。因此,他们决定为机器人编写程序来收集桌子上的这些空瓶子。
测试桌子是一个长为 $l$、宽为 $w$ 的矩形。机器人从坐标 $(x_r, y_r)$ 开始,$n$ 个瓶子分别位于 $(x_i, y_i)$($i = 1, 2, \ldots, n$)。为了收集瓶子,机器人需要移动到瓶子所在的位置,捡起瓶子,然后将其带到桌子的边缘丢弃。机器人一次只能携带一个瓶子,并且只能在桌子的边缘处释放。
假设机器人和瓶子的大小都可以忽略不计(即都是点),因此,机器人在持有瓶子时,可以经过另一个瓶子所在的点。该机器人的控制程序重要的一部分是路径规划。你的任务是编写一个程序,计算机器人收集所有瓶子所需的最短路径长度。
输入格式
第一行输入一个整数 $T$,表示一共有多少个测试用例。接下来是 $T$ 组测试用例。
每一组测试用例的第一行包含两个整数 $w$ 和 $l$,表示桌子的宽度和长度($2 < w, l \leq 10^3$)。
第二行包含一个整数 $n$,表示桌子上有多少个瓶子($1 \leq n \leq 100$)。
接下来的 $n$ 行中,每行有两个整数 $x_i$ 和 $y_i$,表示第 $i$ 个瓶子的坐标($0 < x_i < w; 0 < y_i < l$)。
最后一行的两个整数 $x_r$ 和 $y_r$,表示机器人开始时位于的坐标($0 < x_r < w; 0 < y_r < l$)。注意,机器人初始位置不会与瓶子重叠。
输出格式
对于每个测试用例,输出一个数,表示机器人完成所有瓶子收集任务的最短路径长度。你的答案需要精确到小数点后6位。
说明/提示
- $2 < w, l \leq 10^3$
- $1 \leq n \leq 100$
- $0 < x_i, x_r < w$
- $0 < y_i, y_r < l$
**本翻译由 AI 自动生成**