在一处被宇宙射线笼罩的星域中,你驾驶着一艘小型探索飞船,需要从坐标 (x_s, y_s) 航行到坐标 (x_t, y_t)。飞船可以以速度 1 向任意方向移动,自身视为一个点。
星域中分布着 N 个圆形能量护盾,第 i 个护盾的圆心为 (x_i, y_i),半径为 r_i。护盾之间可能相互重叠,也可能存在包含关系。飞船一旦进入某个护盾的内部,就能免受宇宙射线的伤害。若一个点不在任何护盾内部,则飞船会持续受到宇宙射线的照射。
你的目标是:在从起点到终点的航行过程中,尽可能减少受到宇宙射线照射的总时间。请你计算这个最小照射时间。
输入格式
第一行,四个整数 x_s, y_s, x_t, y_t,分别表示起点和终点的坐标。第二行,一个整数 N,表示圆形护盾的数量。接下来 N 行,每行三个整数 x_i, y_i, r_i,描述第 i 个护盾的圆心坐标和半径。
输出格式
输出一个实数,表示受到宇宙射线照射的最小时间,保留 10 位小数。
输入样例1
-2 -2 2 2
1
0 0 1
输出样例1
3.6568542495
输入样例2
-2 0 2 0
2
-1 0 2
1 0 2
输出样例2
0.0000000000
输入样例3
4 -2 -2 4
3
0 0 2
4 0 1
0 4 1
输出样例3
4.0000000000
说明提示
-10^9 ≤ x_s, y_s, x_t, y_t ≤ 10^9
(x_s, y_s) ≠ (x_t, y_t)
1 ≤ N ≤ 1000
-10^9 ≤ x_i, y_i ≤ 10^9
1 ≤ r_i ≤ 10^9
限制
时间限制:1000ms,内存限制:128MiB