SP5469 HOUSES2 - Houses

题目描述

你面前有三个三角形房子。每个房子由二维平面上的三个点表示。这些房子互不重叠,但可以在边界上共享一些点。 你的位置从点 $(sx, sy)$ 出发,目标是到达点 $(ex, ey)$,并且希望路径尽可能短。你的路径不能穿过房子的内部,但可以沿着房子的边界移动。然而,不能“穿越”墙壁,就如同这个例子所示(请根据实际理解): ![](../../../content/huy391992:houses) 你需要编写一个程序计算并输出最短路径的长度。

输入格式

输入的第一行为整数 $T$,表示测试用例的数量。对于每个测试用例: - 第一行包含四个整数 $sx, sy, ex, ey$,分别表示起点和终点的坐标。 - 接下来的三行,每行有六个整数 $x1, y1, x2, y2, x3, y3$,依次表示一个房子的三个顶点的坐标。

输出格式

对于每个测试用例,输出最短路径的长度,保留五位小数。

说明/提示

- 测试用例数 $T \leq 20$ - 坐标的绝对值小于 1000。 ## 示例 ### 输入 ``` 1 0 0 3 0 1 0 2 0 1 1 2 0 2 -1 3 -1 2 1 3 1 2 2 ``` ### 输出 ``` 3.65028 ``` **本翻译由 AI 自动生成**