#P16669. [Ctu2022]Needle

[Ctu2022]Needle

题目描述

Cimrman 的另一项意外发明,是一种能够自我平衡并主动运动的微型针。

它可以在没有任何外部支撑的情况下保持竖直,并在平面上自由移动。移动过程中,它能够画出极细的线和曲线,留下的痕迹只有几个分子宽。

现在正在进行另一项实验。

绘图平面上有若干实验点,这些点被划分成若干个点云。点云满足:

  • 每个点云至少包含 33 个点;
  • 每个点云的凸包面积为正;
  • 任意两个点云的凸包互不相交。

另外给定起点 SS 和终点 TT。这两个点都不位于任何点云凸包的内部。

一个点云的边界,指该点云凸包的边界。

针需要从 SS 移动到 TT,并满足:

  • 不能进入任何点云凸包的内部;
  • 可以沿任何点云凸包的边界移动。

请计算针从 SSTT 的最短路径长度。

输入格式

第一行包含五个整数:

N Sx Sy Tx Ty

其中:

  • NN 是点云数量;
  • (Sx,Sy)(S_x,S_y) 是起点 SS
  • (Tx,Ty)(T_x,T_y) 是终点 TT

接下来 NN 行描述各点云。

ii 行首先包含整数 cic_i,表示第 ii 个点云中的点数,随后包含 2ci2c_i 个整数:

$$x_{i,1},y_{i,1},x_{i,2},y_{i,2},\ldots,x_{i,c_i},y_{i,c_i}.$$

所有坐标均为 [2000,2000][-2000,2000] 范围内的整数。

所有输入点两两不同。

保证:

1N200,1\le N\le200,

且所有点云中的点数总和满足:

i=1Nci500.\sum_{i=1}^{N}c_i\le500.

输出格式

输出一个实数,表示针从 SSTT 的最短路径长度。

答案需要精确到小数点后 44 位。

样例

输入

1 0 0 10 0
3 4 2 7 3 5 -4

输出

11.8770543023

图示

蓝色粗线表示样例中的一条最短路径。