#P17551. PM2946 负性光刻胶

PM2946 负性光刻胶

题目描述

你正在制作一块电路板。电路由若干针孔以及连接针孔的金属导线组成。可以把针孔看成平面上的点,把金属导线看成连接两个针孔的直线段。

电路图案被制作在一张遮罩上。曝光时,如果将遮罩绕 xx 轴旋转一个角度 θ\theta,遮罩在光刻胶平面上的投影会沿 yy 方向缩短。假设光线与 zz 轴平行,并忽略衍射,则针孔 (x,y)(x,y) 在投影后的坐标可以视为 (x,ycosθ)(x,y\cos\theta)

现在要求:对于每一对能够通过金属导线互相到达的针孔,求它们之间沿导线行走的最短路径长度,并将所有这些最短路径长度相加。这个总和必须 严格小于 给定的限制 LL

如果两个针孔之间不存在路径,则这一对针孔不计入总和。针孔对是无序的,即 (i,j)(i,j)(j,i)(j,i) 只计算一次。

你希望遮罩的倾斜角尽可能小。请计算满足要求的最小非负旋转角 θ\theta,单位为弧度。

注意:

  • 只有输入中明确给出的连接才是金属导线;
  • 即使两条导线在几何上相交或重合,也不会因此产生新的连接;
  • 同一对针孔至多视为存在一条导线,即使输入中重复出现同一个相邻编号;
  • 输入保证连接关系是对称的。

输入格式

第一行输入两个整数 n,Ln,L,分别表示针孔数量和总最短路长度限制。

接下来 nn 行描述编号为 0,1,,n10,1,\ldots,n-1 的针孔。

ii 行的格式为:

X,Y P1 P2 P3 ...

其中:

  • X,Y 表示针孔 ii 在遮罩平面上的整数坐标 (X,Y)(X,Y)
  • 后面的若干整数表示与针孔 ii 直接相连的针孔编号;
  • 某一行可以没有任何相邻编号。

输出格式

输出一个实数,表示满足总最短路长度严格小于 LL 的最小倾斜角,单位为弧度。

答案的绝对误差或相对误差不超过 10910^{-9} 即可。

样例 1

输入

7 100835
3,0 2 3
13,0 2 3
0,2 0 1
8,50 0 1
3,100000 5
100000,3 4
8432,221

输出

1.4454078077996135

样例 2

输入

7 141601
3,0 2 3
13,0 2 3
0,2 0 1
8,50 0 1
3,100000 5
100000,3 4
8432,221

输出

0.010604469396671205

样例 3

输入

7 100065
3,0 2 3
13,0 2 3
0,2 0 1
8,50 0 1
3,100000 5
100000,3 4
8432,221

输出

1.5491503047781332

样例解释

三个样例使用同一组针孔和连接关系,仅限制 LL 不同。

样例 1 中,针孔 0,2,1,30,2,1,3 依次构成一个环。遮罩平放时,针孔 00 到针孔 11 的最短路经过针孔 22;随着倾斜角增大,这条最短路会改为经过针孔 33。针孔 4,54,5 组成另一个连通块,针孔 66 与任何针孔均不连通。

数据范围

  • 2n502\le n\le 50
  • 每行针孔描述的长度不超过 5050 个字符;
  • 0X,Y1000000\le X,Y\le 100000
  • 所有相邻编号均在 [0,n1][0,n-1] 内;
  • 针孔不会与自身相连;
  • iijj 相连,则 jjii 也相连;
  • 1L1091\le L\le 10^9
  • 正确答案保证位于 [0.01,1.55][0.01,1.55] 内;
  • θ=π2\theta=\frac{\pi}{2} 时,总最短路长度取得最小值。