SP5469 HOUSES2 - Houses
题目描述
你面前有三个三角形房子。每个房子由二维平面上的三个点表示。这些房子互不重叠,但可以在边界上共享一些点。
你的位置从点 $(sx, sy)$ 出发,目标是到达点 $(ex, ey)$,并且希望路径尽可能短。你的路径不能穿过房子的内部,但可以沿着房子的边界移动。然而,不能“穿越”墙壁,就如同这个例子所示(请根据实际理解):

你需要编写一个程序计算并输出最短路径的长度。
输入格式
输入的第一行为整数 $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 自动生成**